Storefront theme
Reconnect theme script
Add this to the Shopify theme layout. It runs on every page, creates a first-party visitor ID, checks Reconnect first, and only loads Sitemana Growth when the visitor remains unknown and crosses the page-view threshold.
<script async src="https://oneapp.inguzmana.com/scripts/reconnect-theme.js?shop=brand.myshopify.com&key=PUBLIC_TRACKING_KEY"></script>
Customer events
Shopify custom pixel
Use Brand Snippets to copy the ready-to-paste Shopify custom pixel for the selected brand. It sends product, collection, search, cart, add-cart, checkout-started, and checkout-completed events.
const INGZ_ENDPOINT = "https://oneapp.inguzmana.com/api/track"; const INGZ_SHOP = "brand.myshopify.com"; const INGZ_PUBLIC_KEY = "PUBLIC_TRACKING_KEY";
Checkout
Checkout-only tracker
If a brand currently uses a checkout extension script only, copy the ready-to-paste checkout tracker from Brand Snippets. It preserves the legacy Sitemana checkout payload shape while sending to Reconnect.
const INGZ_CHECKOUT_ENDPOINT = "https://oneapp.inguzmana.com/api/track"; const INGZ_CHECKOUT_SHOP = "brand.myshopify.com"; const INGZ_CHECKOUT_PUBLIC_KEY = "PUBLIC_TRACKING_KEY";
Klaviyo
Custom metrics created by delivery
Klaviyo creates custom metrics when the Events API receives the first event. Configure KLAVIYO_PRIVATE_API_KEY and KLAVIYO_RETENTION_LIST_ID to move from dry-run to live delivery.
IGZ Active on Site IGZ Viewed Product IGZ Viewed Collection IGZ Viewed Search Result IGZ Cart View IGZ Added to Cart IGZ Checkout Started IGZ Checkout Completed
Sitemana raw data
Raw edge ingest
Import raw identity edges instead of querying Sitemana on every old-user visit. Once an edge is in our graph, the next return visit can trigger Reconnect immediately.
curl -X POST https://oneapp.inguzmana.com/api/ingest/sitemana \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SITEMANA_RAW_INGEST_TOKEN" \
-d '{
"shop": "brand.myshopify.com",
"records": [{
"fid_hash": "sha256_of_manafid2",
"mid_hash": "sha256_of_sitemana_mid",
"email_sha256": "lowercase_trimmed_email_sha256",
"klaviyo_profile_id": "01H...",
"provider": "sitemana",
"confidence": 0.82,
"allowed_use": ["retention", "ads"]
}]
}'Growth reporting
Sitemana audience ledger ingest
Import daily Growth identified/provided records from Sitemana so the dashboard can report Growth and Reconnect using the same unique-email ledger.
curl -X POST https://oneapp.inguzmana.com/api/ingest/audience \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AUDIENCE_INGEST_TOKEN" \
-d '{
"shop": "brand.myshopify.com",
"records": [{
"lane": "growth",
"stage": "identified",
"email_sha256": "lowercase_trimmed_email_sha256",
"klaviyo_profile_id": "01H...",
"provider": "sitemana",
"identified_at": "2026-06-10T00:00:00.000Z",
"provided_at": "2026-06-10T00:03:00.000Z",
"status": "sent"
}]
}'Growth script
Shared Sitemana script URL
The Growth script URL is currently shared. Sitemana differentiates brands by the domain configured in its backend, so each brand only needs its own shop/domain and Klaviyo configuration here.
SITEMANA_GROWTH_SCRIPT_URL=https://jsma.s3.us-west-2.amazonaws.com/3DcVjZg/ma.js?tag=visitor
Storage
Vercel Postgres deploy
Use managed Postgres for the first Vercel deployment. Keep file storage for local preview only, and use SQLite only for a single long-lived server or container with persistent disk.
STORAGE_DRIVER=postgres DATABASE_URL=postgresql://user:password@host:5432/reconnect?sslmode=require POSTGRES_SSL=require
Profile graph
Shopify/Klaviyo profile ingest
Import existing customer/profile hashes before launch. This lets a Sitemana raw edge that only contains email_sha256 join back to a real Klaviyo profile for Reconnect delivery.
curl -X POST https://oneapp.inguzmana.com/api/ingest/profiles \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PROFILE_INGEST_TOKEN" \
-d '{
"shop": "brand.myshopify.com",
"records": [{
"email_sha256": "lowercase_trimmed_email_sha256",
"klaviyo_profile_id": "01H...",
"shopify_customer_id": "gid://shopify/Customer/123",
"source": "klaviyo",
"allowed_use": ["retention", "ads"]
}]
}'Brand config
Per-domain Klaviyo settings
Keep Klaviyo API keys in environment variables and set list IDs per brand domain. The dashboard creates a stable public tracking key when this field is left blank.
{
"brands": [{
"shop": "brand.myshopify.com",
"publicKey": "PUBLIC_TRACKING_KEY",
"sitemanaDomain": "brand.com",
"klaviyoPrivateApiKeyEnv": "KLAVIYO_PRIVATE_API_KEY_BRAND",
"klaviyoRetentionListId": "RETENTION_LIST_ID",
"klaviyoGrowthListId": "GROWTH_LIST_ID"
}]
}Access
Dashboard protection
Configure a dashboard password before production. Local development remains open when no password is set.
DASHBOARD_PASSWORD= DASHBOARD_SESSION_TOKEN=