Non-Reciprocal Mobile/AMP
Pages which have a mobile rel alternate link from another page or are AMP pages, but do not correctly canonicalize back; or those which have rel alternate links to a mobile or AMP page that does not reciprocate.
Priority: High
Impact: Negative
What issues it may cause
The mobile or AMP pages will not be seen as a mobile alternate of the desktop page, and instead will be seen a separate page. This may result in either the desktop or mobile pages being seen as duplicates.
How do you fix it
AMP and mobile alternate pages must canonicalise back to their partner desktop page, and primary desktop pages should have rel=alternate or rel=amphtml pointing to the mobile versions.
What is the positive impact
Separate mobile and AMP pages will be seen as mobile alternates of the desktop pages and served in search engine results pages for searches on mobile devices.
How to fetch the data for this report template
You will need to run a crawl for report template to generate report. When report has been generated and you have crawl id you can fetch data for the report using the following query:
- Query
- Variables
- cURL
query GetReportStatForCrawl(
$crawlId: ObjectID!
$reportTemplateCode: String!
$after: String
) {
getReportStat(
input: {crawlId: $crawlId, reportTemplateCode: $reportTemplateCode}
) {
crawlUrls(after: $after, reportType: Basic) {
nodes {
pageTitle
url
description
foundAtUrl
deeprank
level
separateDesktop
separateMobile
amphtml
canonicalUrl
desktopUrl
mobileRelAlternateUrl
mobileReciprocate
mobileRelAmphtmlUrl
amphtmlReciprocate
foundInGoogleAnalytics
foundInGoogleSearchConsole
foundInBacklinks
foundInList
foundInLogSummary
foundInWebCrawl
foundInSitemap
}
totalCount
pageInfo {
endCursor
hasNextPage
}
}
}
}
{"crawlId":"TjAwNUNyYXdsNDAwMA","reportTemplateCode":"non_reciprocal_mobile_amp_desktop"}
curl -X POST -H "Content-Type: application/json" -H "apollographql-client-name: docs-example-client" -H "apollographql-client-version: 1.0.0" -H "x-auth-token: YOUR_API_SESSION_TOKEN" --data '{"query":"query GetReportStatForCrawl( $crawlId: ObjectID! $reportTemplateCode: String! $after: String ) { getReportStat( input: {crawlId: $crawlId, reportTemplateCode: $reportTemplateCode} ) { crawlUrls(after: $after, reportType: Basic) { nodes { pageTitle url description foundAtUrl deeprank level separateDesktop separateMobile amphtml canonicalUrl desktopUrl mobileRelAlternateUrl mobileReciprocate mobileRelAmphtmlUrl amphtmlReciprocate foundInGoogleAnalytics foundInGoogleSearchConsole foundInBacklinks foundInList foundInLogSummary foundInWebCrawl foundInSitemap } totalCount pageInfo { endCursor hasNextPage } } } }","variables":{"crawlId":"TjAwNUNyYXdsNDAwMA","reportTemplateCode":"non_reciprocal_mobile_amp_desktop"}}' https://api.lumar.io/graphql