[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-en-\u002Fen\u002Fdocs\u002Fgoogle-ads-scheduled-feeds":3},{"id":4,"title":5,"body":6,"category":988,"code_examples":989,"demos":989,"description":990,"extension":991,"meta":992,"navigation":989,"order":993,"path":994,"seo":995,"sitemap":1002,"stem":1004,"tags":1005,"toc":1010,"videos":989,"__hash__":1011},"docsEn\u002Fen\u002Fdocs\u002Fgoogle-ads-scheduled-feeds.md","Google Ads Scheduled Feeds — Offline Conversions & Customer Match",{"type":7,"value":8,"toc":957},"minimark",[9,14,23,39,56,61,72,99,103,118,122,162,172,176,181,229,233,306,310,343,405,409,413,458,462,482,523,527,531,542,546,549,591,594,677,681,696,710,714,727,731,765,769,773,784,788,806,810,825,829,846,850,853,882,886,893,897,918,922,953],[10,11,13],"h1",{"id":12},"google-ads-scheduled-feeds","Google Ads Scheduled Feeds",[15,16,17,18,22],"p",{},"This guide shows how to connect Konektor to ",[19,20,21],"strong",{},"Google Ads Scheduled Uploads"," so Google Ads automatically pulls your lead data as:",[24,25,26,33],"ol",{},[27,28,29,32],"li",{},[19,30,31],{},"Offline Conversions"," — to optimize bidding based on real-world conversions (chat → deal).",[27,34,35,38],{},[19,36,37],{},"Customer Match"," — to target\u002Fexclude audiences, build lookalikes, or run remarketing.",[40,41,42],"info",{},[15,43,44,47,48,51,52,55],{},[19,45,46],{},"How it works:"," Konektor exposes two CSV URLs per workspace. Google Ads fetches them on a schedule (Daily \u002F Weekly \u002F Monthly) using ",[19,49,50],{},"HTTP Basic Auth",". All PII (email, phone, name) is ",[19,53,54],{},"SHA-256 hashed"," before transit, per Google's official spec.",[57,58,60],"h2",{"id":59},"architecture","Architecture",[62,63,68],"pre",{"className":64,"code":66,"language":67},[65],"language-text","[Konektor DB]  ──▶  \u002Fv1\u002Fgoogle\u002Ffeeds\u002F{code}\u002Foffline-conversions.csv  ──▶  Google Ads (Scheduled)\n              ──▶  \u002Fv1\u002Fgoogle\u002Ffeeds\u002F{code}\u002Fcustomer-match.csv        ──▶  Google Ads (Scheduled)\n                   ▲\n                   │\n              HTTP Basic Auth\n              (Username + Password you generate)\n","text",[69,70,66],"code",{"__ignoreMap":71},"",[73,74,75,81,87,93],"ul",{},[27,76,77,80],{},[19,78,79],{},"Protocol:"," HTTPS (required).",[27,82,83,86],{},[19,84,85],{},"Auth:"," HTTP Basic Auth (Google Ads standard).",[27,88,89,92],{},[19,90,91],{},"Format:"," CSV per Google's official spec (see below).",[27,94,95,98],{},[19,96,97],{},"Content:"," Generated on-demand when Google fetches — always fresh.",[57,100,102],{"id":101},"prerequisites","Prerequisites",[24,104,105,112,115],{},[27,106,107,108,111],{},"Workspace already has a ",[19,109,110],{},"Tracking Code"," (auto-created at signup).",[27,113,114],{},"An active Google Ads account with Admin \u002F Standard access.",[27,116,117],{},"(For offline conversions) Conversion Actions already created in Google Ads with matching names.",[57,119,121],{"id":120},"step-1-generate-credentials-in-konektor","Step 1 — Generate Credentials in Konektor",[24,123,124,127,134,141,151],{},[27,125,126],{},"Sign in to Konektor → select the workspace to connect.",[27,128,129,130,133],{},"Go to ",[19,131,132],{},"Google Ads Feeds"," (in the Owner sidebar).",[27,135,136,137,140],{},"Click ",[19,138,139],{},"\"Generate Credentials\"",".",[27,142,143,146,147,150],{},[19,144,145],{},"Copy the password"," displayed ",[19,148,149],{},"right now"," — it's shown only once. Save to your password manager.",[27,152,153,154,157,158,161],{},"Also copy the ",[19,155,156],{},"Username"," and both ",[19,159,160],{},"feed URLs"," (offline & customer match).",[163,164,165],"warning",{},[15,166,167,168,171],{},"The password is stored as PBKDF2-SHA-256 (100,000 iterations, random salt per workspace). Konektor NEVER stores plaintext passwords. If you forget it, click ",[19,169,170],{},"\"Rotate Password\""," to create a new one — any active Google Ads schedule will be broken.",[57,173,175],{"id":174},"step-2-set-up-offline-conversions","Step 2 — Set Up Offline Conversions",[177,178,180],"h3",{"id":179},"_2a-create-conversion-actions-in-google-ads","2a. Create Conversion Actions in Google Ads",[24,182,183,196,208,226],{},[27,184,185,186,189,190,189,193,140],{},"Google Ads → ",[19,187,188],{},"Tools & Settings"," → ",[19,191,192],{},"Conversions",[19,194,195],{},"New conversion action",[27,197,198,199,189,202,189,205,140],{},"Pick ",[19,200,201],{},"Import",[19,203,204],{},"Other data sources or CRMs",[19,206,207],{},"Track conversions from clicks",[27,209,210,211,214,215,218,219,218,222,225],{},"Set ",[19,212,213],{},"Name"," to match your Konektor lead statuses (default: ",[69,216,217],{},"new",", ",[69,220,221],{},"qualified",[69,223,224],{},"won",", etc.) — or use name-map in feed settings.",[27,227,228],{},"Repeat for every status you want to import.",[177,230,232],{"id":231},"_2b-create-the-schedule","2b. Create the Schedule",[24,234,235,247,255,264,274,295,300],{},[27,236,185,237,189,239,189,241,189,244,140],{},[19,238,188],{},[19,240,192],{},[19,242,243],{},"Uploads",[19,245,246],{},"Schedules",[27,248,136,249,189,252,140],{},[19,250,251],{},"+",[19,253,254],{},"HTTPS",[27,256,257,258],{},"Paste the offline conversions URL from Konektor:\n",[62,259,262],{"className":260,"code":261,"language":67},[65],"https:\u002F\u002Fkonektor.id\u002Fv1\u002Fgoogle\u002Ffeeds\u002FWS-XXXXXX\u002Foffline-conversions.csv\n",[69,263,261],{"__ignoreMap":71},[27,265,266,267,269,270,273],{},"Enter the ",[19,268,156],{}," and ",[19,271,272],{},"Password"," from Konektor.",[27,275,276,277],{},"Pick a frequency:\n",[73,278,279,285],{},[27,280,281,284],{},[19,282,283],{},"Daily"," (recommended) — enough for most cases.",[27,286,287,290,291,294],{},[19,288,289],{},"Weekly"," \u002F ",[19,292,293],{},"Monthly"," — for low-volume workspaces.",[27,296,136,297,140],{},[19,298,299],{},"Save",[27,301,136,302,305],{},[19,303,304],{},"\"Upload preview\""," — Google Ads will immediately test-fetch your file.",[177,307,309],{"id":308},"_2c-csv-output-example","2c. CSV Output Example",[62,311,315],{"className":312,"code":313,"language":314,"meta":71,"style":71},"language-csv shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Parameters:TimeZone=+0700\nEmail,Phone Number,Conversion Name,Conversion Time,Conversion Value,Conversion Currency\na3f1b2c...,e5d8f7a...,qualified,2026-04-21 10:30:00,100000,IDR\nd92fe8b...,c7b3a14...,won,2026-04-20 15:22:11,2500000,IDR\n","csv",[69,316,317,325,331,337],{"__ignoreMap":71},[318,319,322],"span",{"class":320,"line":321},"line",1,[318,323,324],{},"Parameters:TimeZone=+0700\n",[318,326,328],{"class":320,"line":327},2,[318,329,330],{},"Email,Phone Number,Conversion Name,Conversion Time,Conversion Value,Conversion Currency\n",[318,332,334],{"class":320,"line":333},3,[318,335,336],{},"a3f1b2c...,e5d8f7a...,qualified,2026-04-21 10:30:00,100000,IDR\n",[318,338,340],{"class":320,"line":339},4,[318,341,342],{},"d92fe8b...,c7b3a14...,won,2026-04-20 15:22:11,2500000,IDR\n",[73,344,345,355,365,371,381,396],{},[27,346,347,350,351,354],{},[19,348,349],{},"Parameters:TimeZone"," — Required. Default ",[69,352,353],{},"+0700"," (Jakarta). Change in settings if elsewhere.",[27,356,357,360,361,364],{},[19,358,359],{},"Email \u002F Phone Number"," — SHA-256 hashed. Email lowercased & trimmed, phone normalized to E.164 (",[69,362,363],{},"+62…",").",[27,366,367,370],{},[19,368,369],{},"Conversion Name"," — lead status (or custom mapping).",[27,372,373,376,377,380],{},[19,374,375],{},"Conversion Time"," — ",[69,378,379],{},"yyyy-MM-dd HH:mm:ss"," in the declared time zone.",[27,382,383,376,386,389,390,389,393,140],{},[19,384,385],{},"Conversion Value",[69,387,388],{},"actualValue"," ?? ",[69,391,392],{},"estimatedValue",[69,394,395],{},"0",[27,397,398,401,402,364],{},[19,399,400],{},"Conversion Currency"," — ISO-4217 (default ",[69,403,404],{},"IDR",[57,406,408],{"id":407},"step-3-set-up-customer-match","Step 3 — Set Up Customer Match",[177,410,412],{"id":411},"_3a-create-customer-list-in-google-ads","3a. Create Customer List in Google Ads",[24,414,415,425,433,442,449,452],{},[27,416,185,417,189,419,189,422,140],{},[19,418,188],{},[19,420,421],{},"Audience manager",[19,423,424],{},"Customer lists",[27,426,427,189,429,432],{},[19,428,251],{},[19,430,431],{},"Upload data source: Scheduled"," (via HTTPS).",[27,434,435,436],{},"Paste the customer match URL from Konektor:\n",[62,437,440],{"className":438,"code":439,"language":67},[65],"https:\u002F\u002Fkonektor.id\u002Fv1\u002Fgoogle\u002Ffeeds\u002FWS-XXXXXX\u002Fcustomer-match.csv\n",[69,441,439],{"__ignoreMap":71},[27,443,444,445,269,447,140],{},"Enter ",[19,446,156],{},[19,448,272],{},[27,450,451],{},"Pick a frequency (Daily \u002F Weekly \u002F Monthly).",[27,453,454,457],{},[19,455,456],{},"Check"," the consent confirmation checkbox for customer-data use per Google's policy.",[177,459,461],{"id":460},"_3b-csv-output-example","3b. CSV Output Example",[62,463,465],{"className":312,"code":464,"language":314,"meta":71,"style":71},"Email,Phone,First Name,Last Name,Country,Zip\na3f1b2c...,e5d8f7a...,f4a2b1e...,8c3d7b2...,ID,\nd92fe8b...,c7b3a14...,a1b2c3d...,,ID,\n",[69,466,467,472,477],{"__ignoreMap":71},[318,468,469],{"class":320,"line":321},[318,470,471],{},"Email,Phone,First Name,Last Name,Country,Zip\n",[318,473,474],{"class":320,"line":327},[318,475,476],{},"a3f1b2c...,e5d8f7a...,f4a2b1e...,8c3d7b2...,ID,\n",[318,478,479],{"class":320,"line":333},[318,480,481],{},"d92fe8b...,c7b3a14...,a1b2c3d...,,ID,\n",[73,483,484,490,504,512],{},[27,485,486,487,489],{},"All PII ",[19,488,54],{}," (lowercase hex).",[27,491,492,495,496,499,500,503],{},[19,493,494],{},"Country"," — ISO-2 code (default ",[69,497,498],{},"ID","), ",[19,501,502],{},"not"," hashed.",[27,505,506,509,510,503],{},[19,507,508],{},"Zip"," — optional, ",[19,511,502],{},[27,513,514,515,518,519,522],{},"Requires ",[19,516,517],{},"Email"," OR ",[19,520,521],{},"Phone"," at minimum. Leads without either are skipped.",[57,524,526],{"id":525},"advanced-settings","Advanced Settings",[177,528,530],{"id":529},"status-filter","Status Filter",[15,532,533,534,537,538,218,540,364],{},"By default the offline feed sends ",[19,535,536],{},"all statuses",". Pick specific ones if you want Google Ads to import only key milestones (e.g. ",[69,539,221],{},[69,541,224],{},[177,543,545],{"id":544},"custom-name-map","Custom Name Map",[15,547,548],{},"If you want conversion names in Google Ads to differ from Konektor statuses:",[550,551,552,565],"table",{},[553,554,555],"thead",{},[556,557,558,562],"tr",{},[559,560,561],"th",{},"Konektor Status",[559,563,564],{},"Name in Google Ads",[566,567,568,580],"tbody",{},[556,569,570,575],{},[571,572,573],"td",{},[69,574,221],{},[571,576,577],{},[69,578,579],{},"Qualified Lead",[556,581,582,586],{},[571,583,584],{},[69,585,224],{},[571,587,588],{},[69,589,590],{},"Paid Conversion",[15,592,593],{},"Configure via the UI or PATCH the API directly:",[62,595,599],{"className":596,"code":597,"language":598,"meta":71,"style":71},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"offlineNameMap\": {\n    \"qualified\": \"Qualified Lead\",\n    \"won\": \"Paid Conversion\"\n  }\n}\n","json",[69,600,601,607,625,648,665,671],{"__ignoreMap":71},[318,602,603],{"class":320,"line":321},[318,604,606],{"class":605},"sMK4o","{\n",[318,608,609,612,616,619,622],{"class":320,"line":327},[318,610,611],{"class":605},"  \"",[318,613,615],{"class":614},"spNyl","offlineNameMap",[318,617,618],{"class":605},"\"",[318,620,621],{"class":605},":",[318,623,624],{"class":605}," {\n",[318,626,627,630,633,635,637,640,643,645],{"class":320,"line":333},[318,628,629],{"class":605},"    \"",[318,631,221],{"class":632},"sBMFI",[318,634,618],{"class":605},[318,636,621],{"class":605},[318,638,639],{"class":605}," \"",[318,641,579],{"class":642},"sfazB",[318,644,618],{"class":605},[318,646,647],{"class":605},",\n",[318,649,650,652,654,656,658,660,662],{"class":320,"line":339},[318,651,629],{"class":605},[318,653,224],{"class":632},[318,655,618],{"class":605},[318,657,621],{"class":605},[318,659,639],{"class":605},[318,661,590],{"class":642},[318,663,664],{"class":605},"\"\n",[318,666,668],{"class":320,"line":667},5,[318,669,670],{"class":605},"  }\n",[318,672,674],{"class":320,"line":673},6,[318,675,676],{"class":605},"}\n",[177,678,680],{"id":679},"rolling-window","Rolling Window",[15,682,683,684,687,688,691,692,695],{},"Default offline feed window = ",[19,685,686],{},"last 90 days"," (by ",[69,689,690],{},"updatedAt","). This keeps the payload light and follows Google's guidance (don't re-send ancient conversions). Configurable via the ",[69,693,694],{},"windowDays"," slider (1–540).",[163,697,698,707],{},[15,699,700,703,704,706],{},[19,701,702],{},"The click has its own 90-day limit."," Google rejects an imported event when the ad click that created the lead is older than 90 days. The rolling window looks at ",[69,705,690],{},", so a slow deal can move a very old click back into range. Konektor skips those rows for you, so the CSV never carries a row that Google will reject.",[15,708,709],{},"A lead with a sales cycle longer than 90 days cannot be imported as an offline conversion. Use Customer Match for that audience instead.",[177,711,713],{"id":712},"timezone","Timezone",[15,715,716,717,719,720,723,724,140],{},"Default ",[69,718,353],{}," (Jakarta). Change if your workspace is in a different zone. Format: ",[69,721,722],{},"+HHMM"," or ",[69,725,726],{},"-HHMM",[57,728,730],{"id":729},"security-practices","Security Practices",[73,732,733,740,746,749,752,755,762],{},[27,734,735,736,739],{},"✅ Passwords hashed with ",[19,737,738],{},"PBKDF2-SHA-256",", 100k iterations.",[27,741,742,743,140],{},"✅ Verification uses ",[19,744,745],{},"timing-safe compare",[27,747,748],{},"✅ Rate limited at 60 req\u002Fmin per IP (plenty for Google's daily polling).",[27,750,751],{},"✅ HTTPS-only (Cloudflare TLS).",[27,753,754],{},"✅ 404 (not 401) for unknown workspace codes → no enumeration.",[27,756,757,758,761],{},"✅ ",[69,759,760],{},"Cache-Control: private, no-store"," → feed is never cached by public CDNs.",[27,763,764],{},"✅ Audit trail: last fetch timestamp + row count stored per feed.",[57,766,768],{"id":767},"troubleshooting","Troubleshooting",[177,770,772],{"id":771},"_401-unauthorized-in-the-google-ads-preview","\"401 Unauthorized\" in the Google Ads preview",[73,774,775,781],{},[27,776,777,778,780],{},"Check Username & Password. Forgot? Click ",[19,779,170],{}," in Konektor.",[27,782,783],{},"No leading\u002Ftrailing whitespace when pasting.",[177,785,787],{"id":786},"_404-not-found","\"404 Not Found\"",[73,789,790,796],{},[27,791,792,793,364],{},"Verify the workspace code in the URL (format ",[69,794,795],{},"WS-XXXXXX",[27,797,798,799,290,802,805],{},"Ensure the relevant feed (",[69,800,801],{},"offlineEnabled",[69,803,804],{},"customerMatchEnabled",") is on.",[177,807,809],{"id":808},"low-match-rate-on-customer-match","\"Low match rate\" on Customer Match",[73,811,812,815],{},[27,813,814],{},"Make sure email & phone on leads are real (not dummy values).",[27,816,817,818,821,822,140],{},"Phone must normalize to E.164 — Indonesian ",[69,819,820],{},"08xx"," is auto-converted to ",[69,823,824],{},"+628xx",[177,826,828],{"id":827},"conversion-name-not-found-in-google-ads","\"Conversion name not found\" in Google Ads",[73,830,831,841],{},[27,832,833,834,836,837,840],{},"The ",[69,835,369],{}," field ",[19,838,839],{},"must exactly"," match the Conversion Action name in Google Ads (case-sensitive).",[27,842,843,844,780],{},"Review your ",[69,845,615],{},[177,847,849],{"id":848},"identifiers-or-ios-url-parameters-are-too-old-status-needs-attention","\"Identifiers or iOS URL parameters are too old\" \u002F status \"Needs attention\"",[15,851,852],{},"This message is not about iOS. It tells you that the ad click behind the imported event is older than the click-through conversion window of that conversion action.",[73,854,855,870,873,879],{},[27,856,857,858,861,862,865,866,869],{},"Open ",[19,859,860],{},"Tools → Conversions",", select the conversion action, then set the ",[19,863,864],{},"click-through conversion window"," to ",[19,867,868],{},"90 days"," (the maximum).",[27,871,872],{},"Rows whose click already passed 90 days stay out of the CSV. Google cannot accept them at all.",[27,874,875,876,878],{},"Keep the schedule ",[19,877,283],{},", so each deal reaches Google before its click ages out.",[27,880,881],{},"The status flags the rejected rows only. Conversions that Google already recorded stay valid.",[177,883,885],{"id":884},"delay","Delay",[15,887,888,889,892],{},"Google Ads recommends waiting ",[19,890,891],{},"6 hours"," after a scheduled upload before data appears in conversion reports.",[57,894,896],{"id":895},"next-steps","Next steps",[73,898,899,906,912],{},[27,900,901],{},[902,903,905],"a",{"href":904},"\u002Fen\u002Fdocs\u002Fplatform-guides\u002Fgoogle-ads","GA4 to Google Ads: Conversion Sync Step-by-Step (UI 2026)",[27,907,908],{},[902,909,911],{"href":910},"\u002Fen\u002Fdocs\u002Fadvanced\u002Fconversion-settings","Conversion Settings Configuration - Ad Optimization",[27,913,914],{},[902,915,917],{"href":916},"\u002Fen\u002Fdocs\u002Fplatform-guides\u002Fgoogle-enhanced","Google Enhanced Conversions",[57,919,921],{"id":920},"official-google-references","Official Google References",[73,923,924,932,939,946],{},[27,925,926],{},[902,927,931],{"href":928,"rel":929},"https:\u002F\u002Fsupport.google.com\u002Fgoogle-ads\u002Fanswer\u002F7014069",[930],"nofollow","Import conversions from files (legacy)",[27,933,934],{},[902,935,938],{"href":936,"rel":937},"https:\u002F\u002Fsupport.google.com\u002Fgoogle-ads\u002Fanswer\u002F15081888",[930],"Guidelines for importing offline conversions",[27,940,941],{},[902,942,945],{"href":943,"rel":944},"https:\u002F\u002Fsupport.google.com\u002Fgoogle-ads\u002Fanswer\u002F7659867",[930],"Customer Match format",[27,947,948],{},[902,949,952],{"href":950,"rel":951},"https:\u002F\u002Fsupport.google.com\u002Fgoogle-ads\u002Fanswer\u002F11062876",[930],"Enhanced conversions for leads",[954,955,956],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":71,"searchDepth":327,"depth":327,"links":958},[959,960,961,962,967,971,977,978,986,987],{"id":59,"depth":327,"text":60},{"id":101,"depth":327,"text":102},{"id":120,"depth":327,"text":121},{"id":174,"depth":327,"text":175,"children":963},[964,965,966],{"id":179,"depth":333,"text":180},{"id":231,"depth":333,"text":232},{"id":308,"depth":333,"text":309},{"id":407,"depth":327,"text":408,"children":968},[969,970],{"id":411,"depth":333,"text":412},{"id":460,"depth":333,"text":461},{"id":525,"depth":327,"text":526,"children":972},[973,974,975,976],{"id":529,"depth":333,"text":530},{"id":544,"depth":333,"text":545},{"id":679,"depth":333,"text":680},{"id":712,"depth":333,"text":713},{"id":729,"depth":327,"text":730},{"id":767,"depth":327,"text":768,"children":979},[980,981,982,983,984,985],{"id":771,"depth":333,"text":772},{"id":786,"depth":333,"text":787},{"id":808,"depth":333,"text":809},{"id":827,"depth":333,"text":828},{"id":848,"depth":333,"text":849},{"id":884,"depth":333,"text":885},{"id":895,"depth":327,"text":896},{"id":920,"depth":327,"text":921},"integration",null,"Connect Konektor to Google Ads Scheduled Uploads. Auto-pull offline conversions & customer match audiences via HTTPS + Basic Auth.","md",{},15,"\u002Fen\u002Fdocs\u002Fgoogle-ads-scheduled-feeds",{"title":996,"keywords":997,"canonical":994,"description":990},"Google Ads Scheduled Feeds Guide | Konektor",[998,999,1000,1001],"google ads scheduled uploads","offline conversion import google ads","customer match csv","enhanced conversions for leads",{"loc":994,"lastmod":1003},"2026-09-06","en\u002Fdocs\u002Fgoogle-ads-scheduled-feeds",[1006,1007,1008,1009,1001],"google ads","offline conversions","customer match","scheduled uploads",true,"ijLOcN7SRC_pk5agAjClqewcV65Ged-SmXuPMsrUZ_c"]