Skip to content

JITSU-227: Add Meta Ads Reverse ETL audiences and conversions - #1535

Merged
absorbb merged 6 commits into
newjitsufrom
feat/jitsu-227-meta-reverse-etl
Oct 7, 2026
Merged

absorbb merged 6 commits into
newjitsufrom
feat/jitsu-227-meta-reverse-etl

Conversation

@absorbb

@absorbb absorbb commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Implements Meta/Facebook Reverse ETL for JITSU-227 using the reverse-etl-destination skill and existing runner persistence.

  • Display name: Meta Ads (Facebook & Instagram); keep the facebook-conversions ID and existing valid event behavior.
  • Custom Audiences: create during the first run and snapshot-diff mirror managed audiences; existing customer-list audiences support additions and explicit removals.
  • Conversions: insert-only CAPI delivery, core source-key deduplication, rich per-stream mappings including business messaging.
  • System-user access token; no OAuth flow, new tables, UI provisioning entities, or migrations.

Safety and scope

Persist creation intent before POST and discover uncertain creation by a random marker, never blind recreation. Journal provider-ready payloads and recover lost audience receipts by the exact session. Unknown conversion submission requires manual reconciliation, not replay. API acceptance is not audience matching or attribution. Partial receipts never fabricate per-row success. Permanent errors stop the run; tokens and raw provider error samples are not logged.

Mirror requires an exclusively managed baseline. Core owns snapshots, membership, ownership and addition-before-removal ordering. Empty models remove tracked membership; normal runs refresh unchanged members after 30 days for Meta's 90-day external-ID retention. No native replacement/clear-and-fill, target picker, audience identifier-array fan-out, account sharing, lookalike creation or match-quality reporting. Hightouch and Segment document creation/add-remove mirroring; no competitor code was copied.

Full contract, API references, mappings, prerequisites and recovery limitations: libs/destination-functions/src/functions/facebook/REVERSE_ETL.md.

Verification

  • Destination selected suites: 181 passed, including Meta tests and Google regressions; no live Facebook test.
  • Runner execution, boundaries and mirror lifecycle: 123 passed, 1 existing optional scale test skipped; disposable PostgreSQL and mocked provider HTTP.
  • Console integration: 26 passed; editor/status/list unit suites: 33 passed.
  • Destination, runner and console typechecks, runner bundle, and formatting passed.
  • Parallel finders, independent verification and fresh final review: clean after fixes.

No live advertising writes, database changes, resets or deployments. Meta test-event codes are not a sandbox; a live smoke test needs explicit account/target approval.

Deployment

Manual as requested; no deploy:console label. Deploy console and retl-runner together. No infra/schema migration. The legacy event missing-pixel guard ships with the next rotor build; existing configured event connections remain unchanged.

jitsu-code-review[bot]
jitsu-code-review Bot previously approved these changes Sep 24, 2026

@jitsu-code-review jitsu-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the Meta Reverse ETL runtime, provisioning and delivery/recovery paths, console validation, and the existing review-thread state.

Finding:

  • The shared Meta credential schema now allows ordinary Conversion API destinations to be saved without a pixel/dataset ID; those event deliveries fail only when an event is processed.

Comment thread libs/destination-functions/src/meta.ts
jitsu-code-review[bot]
jitsu-code-review Bot previously approved these changes Sep 25, 2026

@jitsu-code-review jitsu-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the Meta Reverse ETL runtime, provisioning and recovery paths, and console/runner integration.

Finding:

  • Audience identifier arrays are accepted but silently truncated to their first value.

Comment thread libs/destination-functions/src/functions/facebook/audience.ts
jitsu-code-review[bot]
jitsu-code-review Bot previously approved these changes Oct 7, 2026

@jitsu-code-review jitsu-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the Meta Reverse ETL runtime, delivery/recovery behavior, and console credential validation.

Finding:

  • Invalid ISO calendar dates are normalized and sent with a different event timestamp.

Comment thread libs/destination-functions/src/functions/facebook/conversions.ts Outdated

@jitsu-code-review jitsu-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the Meta Reverse ETL runtime, provisioning/recovery flow, conversion and audience payload validation, console configuration guards, and the related runner integration.

No new actionable findings. The existing review threads are resolved and were not re-raised.

@absorbb
absorbb merged commit ebd5164 into newjitsu Oct 7, 2026
12 checks passed
@absorbb
absorbb deleted the feat/jitsu-227-meta-reverse-etl branch October 7, 2026 13:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant