Skip to content

SYSTEM Cited by 1 source

Instacart Campaigns Engine

What it is

The Campaigns Engine is the shared service inside Instacart's marketing-automation platform that turns a campaign launch into a stream of per-customer events. It is shared across Instacart Marketplace and Storefront Pro — Instacart's first-party and multi-tenant retailer surfaces, respectively.

(Source: sources/2026-05-14-instacart-scaling-personalized-marketing-for-multi-tenant-commerce-platforms)

Responsibilities

When a campaign is launched, the Campaigns Engine:

  1. Evaluates the audience — determines which customers match the campaign's targeting criteria.
  2. Assigns experiment variants — buckets each matched customer into the appropriate variant for A/B and multi-variate testing.
  3. Generates offers — synthesizes any associated promotional or personalization content for the customer.
  4. Emits one event per customer to the streaming platform — the per-user event carries the data that downstream personalization + delivery stages need.

Verbatim: "Once a campaign is launched, the Campaigns Engine handles audience evaluation and personalization setup. It determines which customers match the target audience, assigns each customer to an experiment variant, generates any associated offers, and emits one event per customer to our streaming platform."

Reuse across Marketplace and Storefront Pro

A load-bearing architectural decision: "Because this engine is already used across both Instacart Marketplace and Storefront, we can reuse proven targeting and experimentation logic instead of creating separate systems for each business." The same audience-evaluation + experimentation logic that targets Marketplace consumers also targets per-retailer cohorts on Storefront Pro — the multi-tenancy lives downstream (in the CRM Service + per-retailer workspace), not in the Campaigns Engine.

Per-customer event fan-out → upstream of rebatching

The Campaigns Engine's per-customer event-emission shape is what creates the rebatching pressure described in the 2026-05-14 source: "Instacart's Campaigns Engine emits one event per user after audience evaluation and personalization setup. Left as-is, that would require the CRM Service to process users one at a time, creating unnecessary network overhead and placing avoidable pressure on downstream systems."

The downstream stream consumer rebatches per-customer events into groups of up to 50 to amortize the third-party send-API overhead — see patterns/stream-rebatch-for-downstream-batch-api.

Streaming substrate

The 2026-05-14 source refers only to "our streaming platform" without naming it. Treat as substrate-agnostic for now — the post leaves Kafka / Kinesis / in-house unspecified. What is named is the delivery semantics: "at-least-once delivery semantics in the streaming layer" — see concepts/at-least-once-delivery for the consumer-side implications.

Caveats

  • The experimentation plane (allocation, sticky-bucket, post-hoc analysis) is not described in the 2026-05-14 source — only that the Campaigns Engine "assigns each customer to an experiment variant."
  • Audience-evaluation substrate (rule engine? ML model? feature store?) is not described.
  • Throughput / latency numbers for the engine are not disclosed.

Seen in

Last updated · 542 distilled / 1,571 read