Jump to a popular page, or start typing.

    CONNECTIONS / Snowflake / Snowflake to Meta Offline CAPI

    Snowflake offline sales, flowing to Meta CAPI.

    Give Signals a read-only role on the sales table and Meta starts receiving hashed, consent-checked offline conversions on your schedule.

    snowflake -> meta-offline-capi :: live

    1. ● snowflake → meta.offline_capi :: live
    2. > sync table SALES_LEDGER rows=7,206
    3. hash sha256(email,phone) consent=filtered
    4. route meta.offline_capi deliver
    5. ✓ delivered · 6,110 matched

    WHAT THIS ENABLES

    Snowflake to Meta Offline CAPI

    Snowflake to Meta Offline CAPI points Signals at the Snowflake table where your offline sales already live, hashes and filters every row for consent, and delivers offline conversions to Meta on schedule so campaigns finally optimize on in-store and phone revenue.

    • Offline transactions held in Snowflake joining Meta's optimization loop.
    • Dealer, branch, and phone sales credited against the campaigns that drove them.
    • Consent filtering enforced before any record leaves the pipeline.
    WHAT FLOWS WHERE

    The click, the conversion, and the credit.

    The conversion happens off Meta, away from any pixel. Here is how Snowflake closes the loop.

    Meta credits the campaign that sourced the conversion conversion happens off-platform Ad click on Meta Scheduled table sync recorded in Snowflake S Signals hash · dedupe Offline Conversions API delivered · credited
    WHO THIS IS FOR

    Built for the teams that own the number.

    Merchants landing register data in Snowflake nightly.

    Considered-purchase brands closing sales far from the browser.

    Financial services teams with issuance tables to activate.

    HOW DATAHASH SETS IT UP

    From kickoff to verified events.

    1. Connect

      A Snowflake role with SELECT on just the offline sales table.

    2. Map

      Your columns aligned to Meta's offline event fields, hashed as rows are read.

    3. Deliver

      Scheduled incremental delivery with match-rate visibility per batch in the Signals debugger and Meta Events Manager.

    WHAT YOU GET

    What changes when the CSV goes away.

    Capability Manual CSV upload Datahash
    Reporting Offline sales sit in a separate export, reconciled by hand. Revenue counted in the same Offline CAPI reporting as web conversions.
    Deduplication A re-uploaded file risks counting the same conversion twice. Deduped delivery, so a resent record never counts as a second conversion.
    Match visibility Match quality is a guess until the numbers look off. Match rate reported per upload, tied to the source event set that produced it.
    Effort and latency An analyst exports and uploads on a manual cadence. Server-side and automatic the moment Snowflake records the event.
    ON THE WIRE

    What Offline CAPI actually receives.

    signals :: snowflake.meta-offline-capi :: wire

    1. ● signals :: event payload
    2. > POST /offline_conversions source=snowflake.SALES_LEDGER
    3. event_name "Purchase" · event_time 2026-07-04T20:47:00
    4. value 189.00 · currency AED
    5. em sha256 "1fa603…" · ph sha256 "eb2201…" · external_id "txn-51092"
    6. ✓ accepted match=85%
    FAQ

    Asked on almost every call.

    How fresh does the Snowflake sales table need to be for Meta CAPI?

    Meta accepts offline events up to 62 days after they happened, so a daily incremental read is the common default and comfortably inside that window. Teams whose register or CRM replica updates more often can tighten the schedule to hourly without changing the mapping, since each run only picks up rows that changed since the last one.

    What match rate should we expect from a Snowflake-sourced offline batch?

    It depends on identifier coverage in the sales table itself. Rows carrying a clean, current email and phone typically land in the 40 to 70 percent range once hashed; rows missing both fields will not match no matter how the query is tuned. The first batch's feedback sets your baseline and the fix list for whichever columns need attention.

    Can returns and refunds recorded in Snowflake be sent back to Meta?

    Yes. Meta supports value adjustments on an already-matched offline event, so a refund row in the sales table can be mapped to reduce the original conversion value rather than being dropped from the sync entirely. The adjustment carries the same external ID as the original transaction so Meta ties the two together correctly.

    NEXT STEP

    Snowflake to Meta Offline CAPI, in production this week.