Reddit Ads model

Ad performance daily

Daily delivery and purchase results per ad, the Ads Manager "Ads" tab by day.

Grain
date_day x account_id x ad_id
Built from
  1. 5
    Raw tables
  2. 5
    Staging
  3. 1
    Core
  4. 1
    Analytics
Reads from Reddit Ads
adad_accountad_groupad_performancecampaign
Ships as
Weld and dbt SQL, open source on GitHub
core.reddit_ads.ad_performance_daily
1-- core.reddit_ads.ad_performance_daily
2-- Daily delivery and purchase results per ad, the Ads Manager "Ads" tab by day.
3--
4-- Grain: date_day x account_id x ad_id. Currency: the ad account's.
5-- Depends on: staging.reddit_ads.ad_performance, .ad, .ad_group, .campaign, .ad_account
6--
7-- The first twelve columns are the cross-channel ad contract (date_day,
8-- account_id, account_name, campaign_id, campaign_name, ad_id, ad_name, spend,
9-- impressions, clicks, conversions, conversion_value) shared with the other paid
10-- ads templates in this repo, so they can be stacked with UNION ALL.
11--
12-- conversions = purchase click-through + view-through conversions, which is what
13-- Ads Manager shows as "Purchases" under the account's attribution windows.
14-- conversion_value is the matching purchase value. Both are dated on the day of
15-- the ad interaction, not the day of the purchase, and Reddit keeps updating them
16-- as late conversions arrive.
17
18WITH daily AS (
19    -- SUM, not pick-one: with a non-UTC report timezone a local date is spread
20    -- over two UTC report windows.
21    SELECT
22        date_day,
23        account_id,
24        ad_id,
25        SUM(impressions)                AS impressions,
26        SUM(clicks)                     AS clicks,
27        SUM(spend)                      AS spend,
28        SUM(purchase_click_conversions) AS purchase_click_conversions,
29        SUM(purchase_view_conversions)  AS purchase_view_conversions,
30        SUM(purchase_value)             AS purchase_value
31    FROM {{staging.reddit_ads.ad_performance}}
32    GROUP BY 1, 2, 3
33)
34
35SELECT
36    d.date_day,
37    d.account_id,
38    acc.account_name,
39    a.campaign_id,
40    c.campaign_name,

This model and the 6 it depends on. Deploy them together; refs like {{staging.…}} resolve to the matching folders in Weld, and the dbt view uses source() and ref().

Notes

How it counts. And where it stops.

The first twelve columns are the cross-channel ad contract (date_day, account_id, account_name, campaign_id, campaign_name, ad_id, ad_name, spend, impressions, clicks, conversions, conversion_value) shared with the other paid ads templates in this repo, so they can be stacked with UNION ALL. conversions = purchase click-through + view-through conversions, which is what Ads Manager shows as "Purchases" under the account's attribution windows. conversion_value is the matching purchase value. Both are dated on the day of the ad interaction, not the day of the purchase, and Reddit keeps updating them as late conversions arrive.

Raw tables it reads

  • raw.reddit_ads.ad
  • raw.reddit_ads.ad_account
  • raw.reddit_ads.ad_group
  • raw.reddit_ads.ad_performance
  • raw.reddit_ads.campaign

More Reddit Ads models

Put Reddit Ads in front
of your agents.

Connect Reddit Ads, deploy the models, and ask questions in Claude, Cursor or ChatGPT. Free for 14 days, no credit card.