{"product_id":"klaviyo-merchant-reshape","title":"Klaviyo Reshape — flat feed to Google Merchant, products that match","description":"\u003cscript type=\"application\/ld+json\"\u003e{\"@context\":\"https:\/\/schema.org\",\"@type\":\"Product\",\"@id\":\"https:\/\/www.crm-sync.dev\/products\/klaviyo-merchant-reshape#product\",\"name\":\"Klaviyo Reshape — flat feed to Google Merchant, parent intact\",\"description\":\"Klaviyo flattens whatever passes through it — this reads the parent back out of Shopify's GraphQL and emits Google Merchant's nested shape.\",\"category\":{\"@type\":\"Thing\",\"@id\":\"https:\/\/www.crm-sync.dev\/#category-digital-add-on\",\"name\":\"Digital · Add-on\"},\"image\":\"https:\/\/cdn.prod.website-files.com\/6a4db086c210277324d0026b\/6a9672685d1b1243bedef202_klaviyo-merchant-reshape.png\",\"offers\":{\"@type\":\"Offer\",\"price\":\"49\",\"priceCurrency\":\"USD\",\"url\":\"https:\/\/www.crm-sync.dev\/products\/klaviyo-merchant-reshape\",\"availability\":\"https:\/\/schema.org\/InStock\",\"priceValidUntil\":\"2026-10-09\",\"hasMerchantReturnPolicy\":{\"@type\":\"MerchantReturnPolicy\",\"applicableCountry\":\"US\",\"returnPolicyCategory\":\"https:\/\/schema.org\/MerchantReturnFiniteReturnWindow\",\"merchantReturnDays\":30,\"returnMethod\":\"https:\/\/schema.org\/ReturnByMail\",\"returnFees\":\"https:\/\/schema.org\/FreeReturn\"},\"shippingDetails\":{\"@type\":\"OfferShippingDetails\",\"shippingRate\":{\"@type\":\"MonetaryAmount\",\"value\":0,\"currency\":\"USD\"},\"shippingDestination\":{\"@type\":\"DefinedRegion\",\"addressCountry\":\"US\"},\"deliveryTime\":{\"@type\":\"ShippingDeliveryTime\",\"handlingTime\":{\"@type\":\"QuantitativeValue\",\"minValue\":0,\"maxValue\":0,\"unitCode\":\"DAY\"},\"transitTime\":{\"@type\":\"QuantitativeValue\",\"minValue\":0,\"maxValue\":1,\"unitCode\":\"DAY\"}}}}}\u003c\/script\u003e\u003cscript type=\"application\/json\" data-merchant-attributes\u003e{\"title\":\"Klaviyo Reshape — flat feed to Google Merchant, parent intact\",\"description\":\"Klaviyo flattens whatever passes through it — this reads the parent back out of Shopify's GraphQL and emits Google Merchant's nested shape.\",\"link\":\"https:\/\/www.crm-sync.dev\/products\/klaviyo-merchant-reshape\",\"imageLink\":\"https:\/\/cdn.prod.website-files.com\/6a4db086c210277324d0026b\/6a9672685d1b1243bedef202_klaviyo-merchant-reshape.png\",\"availability\":\"IN_STOCK\",\"condition\":\"NEW\",\"brand\":\"CRM Sync\",\"identifierExists\":false,\"price\":{\"amountMicros\":\"49000000\",\"currencyCode\":\"USD\"},\"productTypes\":[\"Digital · Add-on\"],\"shipping\":[{\"country\":\"AU\"},{\"country\":\"AT\"},{\"country\":\"BE\"},{\"country\":\"BG\"},{\"country\":\"CA\"},{\"country\":\"HR\"},{\"country\":\"CY\"},{\"country\":\"CZ\"},{\"country\":\"DK\"},{\"country\":\"EE\"},{\"country\":\"FI\"},{\"country\":\"FR\"},{\"country\":\"DE\"},{\"country\":\"GI\"},{\"country\":\"GR\"},{\"country\":\"HK\"},{\"country\":\"HU\"},{\"country\":\"IE\"},{\"country\":\"IT\"},{\"country\":\"JP\"},{\"country\":\"LV\"},{\"country\":\"LI\"},{\"country\":\"LT\"},{\"country\":\"LU\"},{\"country\":\"MT\"},{\"country\":\"MX\"},{\"country\":\"NL\"},{\"country\":\"NZ\"},{\"country\":\"NO\"},{\"country\":\"PL\"},{\"country\":\"PT\"},{\"country\":\"RO\"},{\"country\":\"SG\"},{\"country\":\"SK\"},{\"country\":\"SI\"},{\"country\":\"ES\"},{\"country\":\"SE\"},{\"country\":\"CH\"},{\"country\":\"AE\"},{\"country\":\"GB\"},{\"country\":\"US\"},{\"country\":\"CN\"},{\"country\":\"KR\"},{\"country\":\"TW\"},{\"country\":\"MN\"},{\"country\":\"VN\"},{\"country\":\"KH\"},{\"country\":\"LA\"},{\"country\":\"MM\"},{\"country\":\"BN\"},{\"country\":\"TL\"},{\"country\":\"PH\"},{\"country\":\"TH\"},{\"country\":\"MY\"},{\"country\":\"ID\"},{\"country\":\"PK\"},{\"country\":\"BD\"},{\"country\":\"LK\"},{\"country\":\"NP\"},{\"country\":\"BT\"},{\"country\":\"MV\"},{\"country\":\"AF\"},{\"country\":\"IN\"},{\"country\":\"KZ\"},{\"country\":\"UZ\"},{\"country\":\"TM\"},{\"country\":\"KG\"},{\"country\":\"TJ\"},{\"country\":\"SA\"},{\"country\":\"QA\"},{\"country\":\"KW\"},{\"country\":\"BH\"},{\"country\":\"OM\"},{\"country\":\"IQ\"},{\"country\":\"JO\"},{\"country\":\"LB\"},{\"country\":\"IL\"},{\"country\":\"YE\"},{\"country\":\"TR\"}],\"shoppingAdsExcludedCountries\":[\"KP\",\"IR\",\"SY\"]}\u003c\/script\u003e\u003ch2 class=\"pdp-h2\"\u003eA Klaviyo loyalty audience is limited to emails, internal to Klaviyo. Supplement that audience with conversions to Google — Global Smart Bidding, with consent — by importing Klaviyo into connected data migration funnels.\u003c\/h2\u003e\n\u003cp\u003eExtend that segment into the look-alike audience you buy when you place ads — built from your own list, across Google's billion-plus global channels, through the Loyalty API endpoints. You gain reach an email list cannot buy: every variant tied to the product it belongs to, permission that travels with the data, and a segment Google will bid on — held in a database you own, not rented.\u003c\/p\u003e\n\u003ch3 class=\"pdp-label\"\u003eHow it works\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eYour lists and segments are read once, read-only, and returned to you as a mirror before anything changes.\u003c\/li\u003e\n\u003cli\u003eSegments carry the query that defines them, not the people they happen to match today — so they keep working after the move.\u003c\/li\u003e\n\u003cli\u003eYour catalog is rebuilt in the shape Google Merchant reads, so every variant stays tied to the product it belongs to instead of arriving as loose rows.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"pdp-label\"\u003eWhat makes it different\u003c\/h3\u003e\n\u003cp\u003eOther migrations copy rows and hope. This one is explicit about what cannot cross: members and permission are never copied, because \u003cstrong\u003ea membership copied on a Tuesday is only true on that Tuesday\u003c\/strong\u003e, and a permission you cannot prove cannot authorise an agent to act for a customer.\u003c\/p\u003e\n\u003ch3 class=\"pdp-label\"\u003eSetup checklist\u003c\/h3\u003e\n\u003cp\u003eRoughly 45 minutes end to end. Open a section to see its steps; tick them off as you go.\u003c\/p\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003e1 · Your own Xano workspace\u003c\/strong\u003e\u003c\/summary\u003e\u003cp\u003eCreating tables needs Xano's workspace-level Metadata key, which can read every record and drop any table in the workspace it belongs to. In a shared workspace that key is far too powerful to hand out. In \u003cem\u003eyour\u003c\/em\u003e workspace it only ever reaches data you already own — so the boundary and the ownership line up.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Create a Xano account and one workspace. Note the instance URL.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Create the two tables: a list catalog, and a per-member subscription table.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Put a unique index on the subscription table across list, member and channel — one state per member per channel, arbitrated by the constraint rather than by code.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/details\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003e2 · Two read-only keys\u003c\/strong\u003e\u003c\/summary\u003e\u003cp\u003eBoth live in your Xano as environment variables. Nothing is pasted into a form and nothing is emailed.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Shopify: create a custom app, grant read-only product, customer and order scopes, copy the Admin API token.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Klaviyo: create a private key with read scopes on lists, segments and profiles only — no write anywhere.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Store the store domain, both keys, and a pinned API revision as environment variables.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Make one test call before going further. A key that fails here fails silently later.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/details\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003e3 · Server-side tagging\u003c\/strong\u003e\u003c\/summary\u003e\u003cp\u003eA browser tag needs a browser. When an agent buys on a customer's behalf there is no browser, no page view and no cookie — so anything measured client-side does not exist for that purchase.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Create a server container in your tag manager, mapped to a subdomain you control.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Point your analytics configuration at that subdomain.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Turn on all four consent signals — storage for analytics, storage for ads, whether data may go to the ad platform at all, and whether it may personalise. The last two gate advertising in the EEA entirely.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Send one test purchase and confirm the event arrives \u003cem\u003ewith\u003c\/em\u003e the consent fields. An event without them looks successful and is unusable.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/details\u003e\n\u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003e4 · Connect, then review\u003c\/strong\u003e\u003c\/summary\u003e\u003cp\u003e\u003cstrong\u003eNothing is emailed at any point.\u003c\/strong\u003e Your connection details go into the form over HTTPS, and your keys never move at all — they stay as environment variables that only your own workspace can read. Anyone who asks you to email a key has misunderstood the design.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Enter your instance URL, workspace ID, store domain and analytics measurement ID in the connection form. None of these are secrets — your store domain and measurement ID already appear in your own page source — but they belong in a form, not a mail thread.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Read your mirror before anything else happens: every list and segment you have, and the key each becomes. It contains \u003cstrong\u003eno customer records at all\u003c\/strong\u003e — zero members, zero profiles — though your segment names are your own commercial detail, so treat it accordingly.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e If the mirror does not match what you expect, stop there. That is what it is for, and it has cost you nothing.\u003c\/li\u003e\n\u003cli\u003e\n\u003cinput type=\"checkbox\"\u003e Approve the re-consent wording before a single customer is contacted.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/details\u003e\n\u003ch3 class=\"pdp-label\"\u003eUnder the hood\u003c\/h3\u003e\n\u003cp\u003eRead-only Klaviyo API on a pinned revision; Shopify GraphQL Admin for the parent relationship; Merchant productAttributes with identifiers as a list and price as an amount plus a currency; two tables with a unique index per list, member and channel.\u003c\/p\u003e\u003cp\u003e\u003ca class=\"crm-pstory-buy\" href=\"#klaviyo-wizard\"\u003eExtend your Klaviyo segment to Google’s global audience →\u003c\/a\u003e\u003c\/p\u003e\u003cp\u003eWhat you gain, and how: your own Xano, two read-only keys, server-side measurement — then your own Klaviyo read back to you. Free, and yours whether or not you buy this.\u003c\/p\u003e\u003cp\u003e\u003ca class=\"crm-pstory-buy\" href=\"https:\/\/www.crm-sync.dev\/pages\/channel#wizard\"\u003eOpen the Channel Wizard →\u003c\/a\u003e\u003c\/p\u003e\u003cp\u003eMint an attributed link or QR for this product — preview it free in the modal; minting unlocks with the Channel Publish add-on.\u003c\/p\u003e","brand":"CRM Sync","offers":[{"title":"Default Title","offer_id":47500901023900,"sku":"klaviyo-merchant-reshape","price":49.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0757\/3654\/7484\/files\/6a9672685d1b1243bedef202_klaviyo-merchant-reshape_3ef8b936-9034-44a8-a102-e6b8471b35ec.png?v=1788244889","url":"https:\/\/www.crm-sync.dev\/products\/klaviyo-merchant-reshape","provider":"CRM Sync","version":"1.0","type":"link"}