[{"data":1,"prerenderedAt":1075},["ShallowReactive",2],{"navigation_docs":3,"-growing-the-catalogue-imports":178,"-growing-the-catalogue-imports-surround":1070},[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":119,"body":180,"description":1062,"extension":1063,"links":1064,"meta":1065,"navigation":1066,"path":120,"seo":1067,"stem":121,"__hash__":1069},"docs\u002F5.growing-the-catalogue\u002F1.imports.md",{"type":181,"value":182,"toc":1043},"minimark",[183,187,202,209,214,297,303,312,316,322,326,332,420,443,447,454,460,463,526,533,579,589,593,596,747,757,761,766,772,775,806,809,835,838,941,948,951,956,963,1040],[184,185,186],"p",{},"An import list lets you add many product URLs in one go. Each URL is matched to a merchant, checked for duplicates and scraped with the merchant's profile. Nothing becomes an offer until you review it: accepting an item creates the offer, and rejecting it throws the URL away.",[184,188,189,190,193,194,197,198,201],{},"Open ",[191,192,119],"strong",{}," in the project sidebar. The page has two tabs, ",[191,195,196],{},"Lists"," and ",[191,199,200],{},"Review messages",".",[184,203,204],{},[205,206],"img",{"alt":207,"src":208},"The Imports page with one import list","\u002Fscreenshots\u002Fimports.png",[210,211,213],"h2",{"id":212},"create-a-list","Create a list",[215,216,217,222,229,233,240,244,247,266,270,273,287,291],"steps",{},[218,219,221],"h3",{"id":220},"open-the-form","Open the form",[184,223,224,225,228],{},"Click ",[191,226,227],{},"New list"," (top right, or press the create shortcut on the page). You need write access to the project.",[218,230,232],{"id":231},"name-the-list","Name the list",[184,234,235,236,239],{},"Give it a ",[191,237,238],{},"Name",", for example \"Shop X autumn catalogue\". If you leave it empty, a name with the date and time is generated.",[218,241,243],{"id":242},"add-the-urls","Add the URLs",[184,245,246],{},"Choose one of two sources:",[248,249,250,257],"ul",{},[251,252,253,256],"li",{},[191,254,255],{},"Paste",": paste one URL per line, or any text that contains URLs (e-mails, spreadsheets, notes). URLs are picked out of the text.",[251,258,259,262,263,201],{},[191,260,261],{},"CSV file",": drop a CSV, TSV or TXT file. The column with URLs is detected automatically; if there is more than one candidate, choose the right one in ",[191,264,265],{},"URL column",[218,267,269],{"id":268},"check-the-summary","Check the summary",[184,271,272],{},"Below the input the form shows how many URLs were found, how many duplicates were removed, and the hosts they belong to. Each host shows the merchant it matches. Two warnings are worth reading:",[248,274,275,281],{},[251,276,277,280],{},[191,278,279],{},"URLs have no merchant",": they are added with a flag. Assign a merchant while reviewing, or create the merchant first and they match on the next check.",[251,282,283,286],{},[191,284,285],{},"URLs will not be checked",": the merchant has no scrape profile, so there is no name or price to review. Add a profile to the merchant to check them.",[218,288,290],{"id":289},"create-the-list","Create the list",[184,292,224,293,296],{},[191,294,295],{},"Create list",". The URLs are uploaded and you land on the list detail page.",[184,298,299],{},[205,300],{"alt":301,"src":302},"The New import list dialog","\u002Fscreenshots\u002Fimports-new.png",[304,305,306,307,311],"note",{},"A list holds at most 20,000 URLs. Split bigger files into several lists. The same page under another spelling (http or https, with or without ",[308,309,310],"code",{},"www",", tracking parameters) counts as one URL.",[218,313,315],{"id":314},"skip-urls-that-already-are-offers","Skip URLs that already are offers",[184,317,318,319,321],{},"The switch ",[191,320,315],{}," is on by default. URLs that already exist as an offer in the project are added as rejected with the reason \"Already an offer\", so you only review new URLs. Turn it off if you want them to appear in the review as flagged items instead.",[210,323,325],{"id":324},"the-lists-overview","The lists overview",[184,327,328,329,331],{},"The ",[191,330,196],{}," tab shows every list with its progress:",[333,334,335,348],"table",{},[336,337,338],"thead",{},[339,340,341,345],"tr",{},[342,343,344],"th",{},"Column",[342,346,347],{},"Meaning",[349,350,351,362,372,382,396,410],"tbody",{},[339,352,353,359],{},[354,355,356],"td",{},[191,357,358],{},"List",[354,360,361],{},"Name, number of URLs and who created it.",[339,363,364,369],{},[354,365,366],{},[191,367,368],{},"Checked",[354,370,371],{},"How many URLs have been scraped so far.",[339,373,374,379],{},[354,375,376],{},[191,377,378],{},"To review",[354,380,381],{},"Items still waiting for a decision. A red badge shows how many of them are flagged.",[339,383,384,393],{},[354,385,386,389,390],{},[191,387,388],{},"Accepted"," \u002F ",[191,391,392],{},"Rejected",[354,394,395],{},"Items already decided.",[339,397,398,403],{},[354,399,400],{},[191,401,402],{},"Reviewer",[354,404,405,406,409],{},"Who is reviewing the list right now, or ",[191,407,408],{},"Done"," when it is finished.",[339,411,412,417],{},[354,413,414],{},[191,415,416],{},"Created",[354,418,419],{},"When the list was created.",[184,421,422,423,426,427,429,430,433,434,426,436,197,439,442],{},"Filter with ",[191,424,425],{},"Open",", ",[191,428,408],{}," or ",[191,431,432],{},"All",", or search by name. The row menu has ",[191,435,425],{},[191,437,438],{},"Review one by one",[191,440,441],{},"Delete",". Deleting a list does not remove offers that were already created from it.",[210,444,446],{"id":445},"list-detail","List detail",[184,448,449,450,453],{},"Opening a list starts the checker. A bar at the top shows how many URLs have been scraped, with ",[191,451,452],{},"Retry failed"," when some checks failed. The checker runs while the page is open, so keep it open until the bar says nothing is left to check.",[184,455,456],{},[205,457],{"alt":458,"src":459},"An import list with its review tabs","\u002Fscreenshots\u002Fimport-detail.png",[184,461,462],{},"The tabs split the items:",[333,464,465,475],{},[336,466,467],{},[339,468,469,472],{},[342,470,471],{},"Tab",[342,473,474],{},"Contains",[349,476,477,486,496,506,517],{},[339,478,479,483],{},[354,480,481],{},[191,482,378],{},[354,484,485],{},"Everything pending.",[339,487,488,493],{},[354,489,490],{},[191,491,492],{},"Flagged",[354,494,495],{},"Pending items with a blocking flag.",[339,497,498,503],{},[354,499,500],{},[191,501,502],{},"Ready",[354,504,505],{},"Checked items that have a product and no blocking flag.",[339,507,508,514],{},[354,509,510,389,512],{},[191,511,388],{},[191,513,392],{},[354,515,516],{},"Decided items.",[339,518,519,523],{},[354,520,521],{},[191,522,432],{},[354,524,525],{},"Every item.",[184,527,528,529,532],{},"Search by URL, scraped name or product, or filter with ",[191,530,531],{},"Any flag",". In the table you can pick a product for each item directly. Select rows to get a bulk bar with:",[248,534,535,541,547,553,566],{},[251,536,537,540],{},[191,538,539],{},"Accept",": creates an offer for each selected item.",[251,542,543,546],{},[191,544,545],{},"Accept, creating N products",": items without a product get a new product named after the scraped name.",[251,548,549,552],{},[191,550,551],{},"Replace URLs of N existing offers",": for items where the merchant already has an offer for the chosen product, update that offer instead (see below).",[251,554,555,426,558,561,562,565],{},[191,556,557],{},"Reject",[191,559,560],{},"Reopen"," (for rejected items) and ",[191,563,564],{},"Refresh"," (runs the merchant profile again, for example after you fixed the profile).",[251,567,568,571,572,197,575,578],{},[191,569,570],{},"More",": ",[191,573,574],{},"Set merchant…",[191,576,577],{},"Set product…"," for all selected items.",[184,580,581,582,584,585,588],{},"On the ",[191,583,502],{}," tab, ",[191,586,587],{},"Accept all N ready"," accepts everything that is ready after a confirmation. Bulk accepts run in chunks of 20 items, because each accepted item also creates its entry in Scrape Admin.",[218,590,592],{"id":591},"flags","Flags",[184,594,595],{},"Flags tell you why an item needs attention. A blocking flag stops an accept; a warning needs a look; info is a hint.",[333,597,598,610],{},[336,599,600],{},[339,601,602,605,608],{},[342,603,604],{},"Flag",[342,606,607],{},"Severity",[342,609,347],{},[349,611,612,625,637,649,661,673,686,698,710,722,734],{},[339,613,614,619,622],{},[354,615,616],{},[191,617,618],{},"Already an offer",[354,620,621],{},"Blocking",[354,623,624],{},"An offer with this URL already exists.",[339,626,627,632,634],{},[354,628,629],{},[191,630,631],{},"Duplicate in list",[354,633,621],{},[354,635,636],{},"The same URL appears earlier in this list.",[339,638,639,644,646],{},[354,640,641],{},[191,642,643],{},"No merchant",[354,645,621],{},[354,647,648],{},"No merchant matches the host.",[339,650,651,656,658],{},[354,652,653],{},[191,654,655],{},"Redirects to offer",[354,657,621],{},[354,659,660],{},"The page redirects to a URL that already is an offer.",[339,662,663,668,670],{},[354,664,665],{},[191,666,667],{},"Merchant has product",[354,669,621],{},[354,671,672],{},"The chosen product already has an offer from this merchant.",[339,674,675,680,683],{},[354,676,677],{},[191,678,679],{},"In another list",[354,681,682],{},"Warning",[354,684,685],{},"The same URL waits for review in another list.",[339,687,688,693,695],{},[354,689,690],{},[191,691,692],{},"No profile",[354,694,682],{},[354,696,697],{},"The merchant has no scrape profile, so the URL was not checked.",[339,699,700,705,707],{},[354,701,702],{},[191,703,704],{},"Check failed",[354,706,682],{},[354,708,709],{},"Running the merchant profile failed.",[339,711,712,717,719],{},[354,713,714],{},[191,715,716],{},"No name",[354,718,682],{},[354,720,721],{},"The scrape returned no product name.",[339,723,724,729,731],{},[354,725,726],{},[191,727,728],{},"No price",[354,730,682],{},[354,732,733],{},"The scrape returned no price (or 0).",[339,735,736,741,744],{},[354,737,738],{},[191,739,740],{},"Similar product",[354,742,743],{},"Info",[354,745,746],{},"Existing products look like this one; pick one instead of creating a new product.",[184,748,749,750,752,753,756],{},"Admins can accept an item despite blocking flags with ",[191,751,570],{}," > ",[191,754,755],{},"Accept despite flags",". Everyone else must reject the item or fix the cause (change merchant or product).",[210,758,760],{"id":759},"review-screen","Review screen",[184,762,763,765],{},[191,764,438],{}," opens a focused screen for one item at a time. The left side shows the item: its position, merchant, URL, the scraped name and price, any flags and review messages, possible duplicates (links to the existing offers or items), and the scraped attributes. The right side is the decision.",[184,767,768],{},[205,769],{"alt":770,"src":771},"The review screen for one item","\u002Fscreenshots\u002Fimport-review.png",[184,773,774],{},"On the right you set:",[248,776,777,783,797],{},[251,778,779,782],{},[191,780,781],{},"Merchant",": the matched merchant; change it if the host was wrong.",[251,784,785,788,789,792,793,796],{},[191,786,787],{},"Product",": choose ",[191,790,791],{},"Existing"," (search, or pick one of the numbered suggestions) or ",[191,794,795],{},"New"," to create a product from the scraped name. Brands found in the scraped name are suggested for a new product.",[251,798,799,197,802,805],{},[191,800,801],{},"Price",[191,803,804],{},"Stock",": prefilled from the scrape, editable.",[184,807,808],{},"Then decide:",[248,810,811,820,829],{},[251,812,813,816,817,819],{},[191,814,815],{},"Accept as offer"," creates the offer. If you chose ",[191,818,795],{},", the product (and brand) is created first. The offer starts being tracked in Scrape Admin.",[251,821,822,824,825,828],{},[191,823,557],{}," discards the item. You can give an optional ",[191,826,827],{},"Reject reason",". Rejected items can be reopened from the list.",[251,830,831,834],{},[191,832,833],{},"Replace offer URL"," appears instead of Accept when the merchant already sells the chosen product (\"The merchant already sells this product\"). Use it when the merchant moved the page: the existing offer gets the new URL, price and stock instead of a second offer being created.",[184,836,837],{},"Keyboard shortcuts on the screen:",[333,839,840,850],{},[336,841,842],{},[339,843,844,847],{},[342,845,846],{},"Key",[342,848,849],{},"Action",[349,851,852,862,871,884,898,908,918,931],{},[339,853,854,859],{},[354,855,856],{},[308,857,858],{},"A",[354,860,861],{},"Accept (or replace the URL)",[339,863,864,869],{},[354,865,866],{},[308,867,868],{},"R",[354,870,557],{},[339,872,873,881],{},[354,874,875,389,878],{},[308,876,877],{},"J",[308,879,880],{},"K",[354,882,883],{},"Next \u002F previous item",[339,885,886,895],{},[354,887,888,891,892],{},[308,889,890],{},"1"," to ",[308,893,894],{},"3",[354,896,897],{},"Pick a suggested product",[339,899,900,905],{},[354,901,902],{},[308,903,904],{},"N",[354,906,907],{},"Create a new product",[339,909,910,915],{},[354,911,912],{},[308,913,914],{},"P",[354,916,917],{},"Preview the selected product",[339,919,920,928],{},[354,921,922,925,926],{},[308,923,924],{},"Shift"," ",[308,927,868],{},[354,929,930],{},"Refresh the item (when it has a profile)",[339,932,933,938],{},[354,934,935],{},[308,936,937],{},"Esc",[354,939,940],{},"Back to the list",[184,942,943,944,947],{},"When someone else is reviewing the same list, a banner tells you who. You can still work on it, or use ",[191,945,946],{},"Take over",". A review lock lasts 60 minutes without activity.",[210,949,200],{"id":950},"review-messages",[184,952,328,953,955],{},[191,954,200],{}," tab holds house rules shown to reviewers. A message has conditions on an item and a text; whenever an item matches every condition, the text appears on the item in the review screen, for example \"refurbished items go to the B-stock product\".",[184,957,958,959,962],{},"Only project admins can create, edit or delete messages. Click ",[191,960,961],{},"New message"," and fill in:",[248,964,965,969,1009,1015],{},[251,966,967,201],{},[191,968,238],{},[251,970,971,974,975,426,978,426,981,426,984,426,987,426,990,429,992,995,996,426,999,426,1002,1005,1006,201],{},[191,972,973],{},"Conditions",": pick a field (",[191,976,977],{},"Scraped name",[191,979,980],{},"URL",[191,982,983],{},"Host",[191,985,986],{},"Merchant (slug)",[191,988,989],{},"Brand",[191,991,787],{},[191,993,994],{},"Price (cents)","), a mode (",[191,997,998],{},"matches any of",[191,1000,1001],{},"matches all of",[191,1003,1004],{},"matches none of",") and one regular expression per line. Matching is case-insensitive. Add several conditions with ",[191,1007,1008],{},"Add condition",[251,1010,1011,1014],{},[191,1012,1013],{},"Message (markdown)",": the text reviewers see.",[251,1016,1017,1020,1021,1024,1025,1027,1028,1030,1031,1033,1034,1036,1037,1039],{},[191,1018,1019],{},"Flag matching items"," (optional): also raises a custom flag on pending items that match, with a ",[191,1022,1023],{},"Flag label"," (badge text, defaults to the name) and a ",[191,1026,607],{},". ",[191,1029,621],{}," moves items to ",[191,1032,492],{}," and accepting needs an admin override, ",[191,1035,682],{}," shows a badge and the item stays in review, ",[191,1038,743],{}," is a hint in the item detail only. Items are re-flagged when you save.",[184,1041,1042],{},"A message without conditions is never shown.",{"title":1044,"searchDepth":1045,"depth":1045,"links":1046},"",2,[1047,1056,1057,1060,1061],{"id":212,"depth":1045,"text":213,"children":1048},[1049,1051,1052,1053,1054,1055],{"id":220,"depth":1050,"text":221},3,{"id":231,"depth":1050,"text":232},{"id":242,"depth":1050,"text":243},{"id":268,"depth":1050,"text":269},{"id":289,"depth":1050,"text":290},{"id":314,"depth":1050,"text":315},{"id":324,"depth":1045,"text":325},{"id":445,"depth":1045,"text":446,"children":1058},[1059],{"id":591,"depth":1050,"text":592},{"id":759,"depth":1045,"text":760},{"id":950,"depth":1045,"text":200},"Add many product URLs at once as a review list, then accept them into offers one by one or in bulk.","md",null,{},{"icon":122},{"title":119,"description":1068},"Paste URLs or upload a CSV, let the platform match merchants and scrape each page, then review the items into offers.","Z7-t8t51pT6NH3ZulAQzA77O7qwMwAqxy2gONocC0xA",[1071,1073],{"title":108,"path":109,"stem":110,"description":1072,"icon":111,"children":-1},"How scrape results arrive from Scrape Admin, how to read the delivery log and how to replay a delivery.",{"title":124,"path":125,"stem":126,"description":1074,"icon":127,"children":-1},"Find catalogue problems in one place and fix them in bulk or one by one.",1792430223305]