[{"data":1,"prerenderedAt":464},["ShallowReactive",2],{"navigation_docs":3,"-scraping-sync-and-reconcile":178,"-scraping-sync-and-reconcile-surround":459},[4,25,50,81,112,133,158],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":16,"path":17,"stem":18,"icon":19},"Concepts","\u002Fgetting-started\u002Fconcepts","1.getting-started\u002F2.concepts","i-lucide-book-a",{"title":21,"path":22,"stem":23,"icon":24},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":6},"Workspace","i-lucide-users","\u002Fworkspace","2.workspace",[31,36,41,45],{"title":32,"path":33,"stem":34,"icon":35},"Account","\u002Fworkspace\u002Faccount","2.workspace\u002F1.account","i-lucide-circle-user",{"title":37,"path":38,"stem":39,"icon":40},"Teams","\u002Fworkspace\u002Fteams","2.workspace\u002F2.teams","i-lucide-building-2",{"title":42,"path":43,"stem":44,"icon":27},"Members and roles","\u002Fworkspace\u002Fmembers-and-roles","2.workspace\u002F3.members-and-roles",{"title":46,"path":47,"stem":48,"icon":49},"Projects","\u002Fworkspace\u002Fprojects","2.workspace\u002F4.projects","i-lucide-folder-kanban",{"title":51,"icon":52,"path":53,"stem":54,"children":55,"page":6},"Catalogue","i-lucide-package","\u002Fcatalogue","3.catalogue",[56,61,66,71,76],{"title":57,"path":58,"stem":59,"icon":60},"Products","\u002Fcatalogue\u002Fproducts","3.catalogue\u002F1.products","i-lucide-box",{"title":62,"path":63,"stem":64,"icon":65},"Offers","\u002Fcatalogue\u002Foffers","3.catalogue\u002F2.offers","i-lucide-tag",{"title":67,"path":68,"stem":69,"icon":70},"Brands","\u002Fcatalogue\u002Fbrands","3.catalogue\u002F3.brands","i-lucide-badge-check",{"title":72,"path":73,"stem":74,"icon":75},"Merchants","\u002Fcatalogue\u002Fmerchants","3.catalogue\u002F4.merchants","i-lucide-store",{"title":77,"path":78,"stem":79,"icon":80},"Custom attributes","\u002Fcatalogue\u002Fcustom-attributes","3.catalogue\u002F5.custom-attributes","i-lucide-list-plus",{"title":82,"icon":83,"path":84,"stem":85,"children":86,"page":6},"Scraping","i-lucide-scan-search","\u002Fscraping","4.scraping",[87,92,97,102,107],{"title":88,"path":89,"stem":90,"icon":91},"Connect Scrape Admin","\u002Fscraping\u002Fconnect-scrape-admin","4.scraping\u002F1.connect-scrape-admin","i-lucide-plug",{"title":93,"path":94,"stem":95,"icon":96},"Scrape profiles","\u002Fscraping\u002Fscrape-profiles","4.scraping\u002F2.scrape-profiles","i-lucide-scan-text",{"title":98,"path":99,"stem":100,"icon":101},"Schedules and configuration","\u002Fscraping\u002Fschedules-and-configuration","4.scraping\u002F3.schedules-and-configuration","i-lucide-sliders-horizontal",{"title":103,"path":104,"stem":105,"icon":106},"Sync and reconcile","\u002Fscraping\u002Fsync-and-reconcile","4.scraping\u002F4.sync-and-reconcile","i-lucide-refresh-cw",{"title":108,"path":109,"stem":110,"icon":111},"Webhooks","\u002Fscraping\u002Fwebhooks","4.scraping\u002F5.webhooks","i-lucide-webhook",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":6},"Growing the catalogue","i-lucide-sprout","\u002Fgrowing-the-catalogue","5.growing-the-catalogue",[118,123,128],{"title":119,"path":120,"stem":121,"icon":122},"Imports","\u002Fgrowing-the-catalogue\u002Fimports","5.growing-the-catalogue\u002F1.imports","i-lucide-import",{"title":124,"path":125,"stem":126,"icon":127},"Repair queues","\u002Fgrowing-the-catalogue\u002Frepair-queues","5.growing-the-catalogue\u002F2.repair-queues","i-lucide-wrench",{"title":129,"path":130,"stem":131,"icon":132},"Wrong URL flow","\u002Fgrowing-the-catalogue\u002Fwrong-url-flow","5.growing-the-catalogue\u002F3.wrong-url-flow","i-lucide-route",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":6},"Publishing","i-lucide-globe","\u002Fpublishing","6.publishing",[139,143,148,153],{"title":140,"path":141,"stem":142,"icon":135},"Websites","\u002Fpublishing\u002Fwebsites","6.publishing\u002F1.websites",{"title":144,"path":145,"stem":146,"icon":147},"Website content","\u002Fpublishing\u002Fwebsite-content","6.publishing\u002F2.website-content","i-lucide-languages",{"title":149,"path":150,"stem":151,"icon":152},"SEO templates","\u002Fpublishing\u002Fseo-templates","6.publishing\u002F3.seo-templates","i-lucide-search",{"title":154,"path":155,"stem":156,"icon":157},"Analytics","\u002Fpublishing\u002Fanalytics","6.publishing\u002F4.analytics","i-lucide-chart-line",{"title":159,"icon":160,"path":161,"stem":162,"children":163,"page":6},"Developers","i-lucide-code","\u002Fdevelopers","7.developers",[164,169,173],{"title":165,"path":166,"stem":167,"icon":168},"Public API","\u002Fdevelopers\u002Fpublic-api","7.developers\u002F1.public-api","i-lucide-code-xml",{"title":170,"path":171,"stem":172,"icon":52},"Listings client","\u002Fdevelopers\u002Flistings-client","7.developers\u002F2.listings-client",{"title":174,"path":175,"stem":176,"icon":177},"Click tracking","\u002Fdevelopers\u002Fclick-tracking","7.developers\u002F3.click-tracking","i-lucide-mouse-pointer-click",{"id":179,"title":103,"body":180,"description":451,"extension":452,"links":453,"meta":454,"navigation":455,"path":104,"seo":456,"stem":105,"__hash__":458},"docs\u002F4.scraping\u002F4.sync-and-reconcile.md",{"type":181,"value":182,"toc":442},"minimark",[183,213,219,226,231,247,251,260,266,282,288,298,312,316,327,330,344,414,424,428,431],[184,185,186,187,191,192,195,196,199,200,204,205,208,209,212],"p",{},"Scrape Admin holds a copy of what needs scraping: a profile for each ",[188,189,190],"a",{"href":94},"scrape profile",", a collection for each ",[188,193,194],{"href":73},"merchant"," and an entry for each ",[188,197,198],{"href":63},"offer",". The platform keeps these in step as you edit, but things can drift, for example after an import, after a failed push or when someone edits Scrape Admin directly. The ",[201,202,203],"strong",{},"Sync"," tab in ",[201,206,207],{},"Settings"," finds and fixes such differences. It is only available to project admins, and needs a ",[188,210,211],{"href":89},"connected"," project.",[184,214,215,216,218],{},"When Scrape Admin is not connected the tab only shows a ",[201,217,88],{}," button.",[184,220,221],{},[222,223],"img",{"alt":224,"src":225},"The Sync tab of a project that is not connected yet","\u002Fscreenshots\u002Fsettings-sync.png",[227,228,230],"h2",{"id":229},"coverage","Coverage",[184,232,233,234,236,237,240,241,243,244,246],{},"The ",[201,235,230],{}," card shows, for ",[201,238,239],{},"Profiles",", ",[201,242,72],{}," and ",[201,245,62],{},", how many are synced out of the total, and how many are pending or failed. Imported rows stay pending until a sync pushes them.",[227,248,250],{"id":249},"sync-operations","Sync operations",[184,252,233,253,255,256,259],{},[201,254,203],{}," card has three operations. They run in your browser tab, a page of up to 20 items at a time, so keep the tab open until it finishes. You can click ",[201,257,258],{},"Stop"," at any time: the next run picks up what is left.",[184,261,262,265],{},[201,263,264],{},"Sync everything"," is the full repair. After you confirm, it:",[267,268,269,273,276,279],"ul",{},[270,271,272],"li",{},"creates missing profiles, collections and entries in Scrape Admin;",[270,274,275],{},"updates what is out of date;",[270,277,278],{},"applies newer results found in Scrape Admin;",[270,280,281],{},"deletes entries and collections that this platform created and that no longer belong to anything. Entries created elsewhere are kept.",[184,283,284,287],{},[201,285,286],{},"Check only"," compares with Scrape Admin and changes nothing. This is the same check the nightly run does.",[184,289,290,293,294,297],{},[201,291,292],{},"Push all offers"," sends every offer's entry to Scrape Admin without checking first. Switch on ",[201,295,296],{},"Force"," to send every entry even when nothing changed, for example after the webhook secret was rotated.",[184,299,300,301,240,304,307,308,311],{},"While a run is going you see the number of pages and items, any failures with the offer and error, and a ",[201,302,303],{},"Finished",[201,305,306],{},"Stopped"," or ",[201,309,310],{},"Failed"," badge.",[227,313,315],{"id":314},"nightly-check","Nightly check",[184,317,318,319,322,323,326],{},"Switch on ",[201,320,321],{},"Check this project every night"," to compare the project with Scrape Admin every night. It only reports: nothing is changed. The result is stored and shown under ",[201,324,325],{},"Last check",".",[227,328,325],{"id":329},"last-check",[184,331,332,334,335,307,337,339,340,343],{},[201,333,325],{}," shows the result of the most recent check or sync, labelled ",[201,336,203],{},[201,338,286],{},", and ",[201,341,342],{},"Unfinished"," if the walk was cut short. If everything matched it says so. Otherwise it counts the findings and lists the first 50:",[345,346,347,360],"table",{},[348,349,350],"thead",{},[351,352,353,357],"tr",{},[354,355,356],"th",{},"Finding",[354,358,359],{},"Meaning",[361,362,363,374,384,394,404],"tbody",{},[351,364,365,371],{},[366,367,368],"td",{},[201,369,370],{},"Missing in Scrape Admin",[366,372,373],{},"Exists here, but not (any more) in Scrape Admin.",[351,375,376,381],{},[366,377,378],{},[201,379,380],{},"Out of date",[366,382,383],{},"Exists in both, but differs.",[351,385,386,391],{},[366,387,388],{},[201,389,390],{},"Newer result upstream",[366,392,393],{},"Scrape Admin has a newer result than the platform.",[351,395,396,401],{},[366,397,398],{},[201,399,400],{},"Unknown entry",[366,402,403],{},"An entry in Scrape Admin that this project does not know.",[351,405,406,411],{},[366,407,408],{},[201,409,410],{},"Unknown collection",[366,412,413],{},"A collection in Scrape Admin that this project does not know.",[184,415,416,417,240,420,423],{},"Each finding is linked to the offer, merchant or profile and has an outcome: ",[201,418,419],{},"Fixed",[201,421,422],{},"Reported"," (check only), or the error when it could not be fixed.",[227,425,427],{"id":426},"sync-one-record","Sync one record",[184,429,430],{},"Product, brand and merchant pages have sync buttons when the project is connected. They act on that record's offers only, for example all offers of one merchant. Members can request a refresh (push the entries and run them now); admins can also push the entries without running them.",[184,432,433,434,437,438,441],{},"On a single offer, ",[201,435,436],{},"Refresh"," syncs its entry and queues a run now. The result arrives by ",[188,439,440],{"href":109},"webhook",". Disabled offers and offers of deprecated products or merchants are skipped by bulk refreshes.",{"title":443,"searchDepth":444,"depth":444,"links":445},"",2,[446,447,448,449,450],{"id":229,"depth":444,"text":230},{"id":249,"depth":444,"text":250},{"id":314,"depth":444,"text":315},{"id":329,"depth":444,"text":325},{"id":426,"depth":444,"text":427},"Keep profiles, merchants and offers in step with Scrape Admin, check for drift and push everything again.","md",null,{},{"icon":106},{"title":103,"description":457},"What sync, check and push do on the Sync settings tab, how coverage and the nightly check work, and how to sync a single product, brand or merchant.","1ctCFXT1k5RhO6fP8Lp4SPYzj8AEmN-xlXnzxnRfbhg",[460,462],{"title":98,"path":99,"stem":100,"description":461,"icon":101,"children":-1},"Set the default scrape schedule, the status codes that deactivate offers and the other project defaults.",{"title":108,"path":109,"stem":110,"description":463,"icon":111,"children":-1},"How scrape results arrive from Scrape Admin, how to read the delivery log and how to replay a delivery.",1792440614052]