- Display name
- ASCAP Domestic
- Key
- ASCAP_DOM
- Rights layer
- Composition
- File format
- CSV
- Default currency
- USD
- Source kind
- PRO
- Notes
- US performance royalties. ASCAP added a Program Code column in Q3 2025.
Configuration
Edit configurationExtraction query
Edit queryReads CSVUpdated 07/12/2026
-- ASCAP Domestic distribution export -> normalized schema
SELECT
row_number() OVER () AS line_number,
trim("Work Title") AS song_title,
upper(trim("Work Title")) AS song_title_key,
upper(trim("Music User")) AS source_name_key,
upper(trim("Performance Source/Broadcast Medium")) AS income_class_key,
upper(trim("Type Of Right")) AS right_type_key,
upper(trim("Role Type")) AS role_type_key,
upper(trim("Territory")) AS territory_raw,
trim("Composer Name") AS writer_name,
TRY_CAST("Number of Plays" AS DECIMAL(14,2)) AS units,
TRY_CAST("Dollars" AS DECIMAL(18,4))
+ COALESCE(TRY_CAST("Premium Dollars" AS DECIMAL(18,4)), 0) AS amount_raw,
COALESCE(upper(trim("Adjustment Indicator")), '') IN ('Y', 'YES') AS adjustment,
COALESCE(TRY_CAST(trim("Performance Start Date") AS DATE),
CAST(try_strptime(trim("Performance Start Date"), '%m/%d/%Y') AS DATE)) AS earning_date,
'USD' AS currency,
to_json(row) AS source_row
FROM read_csv('{{file}}', header = true, sample_size = -1, all_varchar = true) AS row;
Territory resolution
Edit overridesterritory_raw is resolved to an ISO 3166-1 alpha-2 code in code via a country lookup — not with rules. Values the lookup can't resolve (historical territories, regional groupings) fall back to this override table.
GREAT BRITAIN→GB
THE NETHERLANDS→NL
UNITED STATES OF AMERICA→US
Normalization rules
Edit rulesThis source's own rules, grouped by the attribute each writes. First match wins, top to bottom; conditions within a rule are ANDed. Each group ends in a pinned catch-all.
Stage 1 — Raw match keys to standard enums
income_channel_std
6 rules1STREAMING_VIDEOincome_class_key ~ GN-AV*
2BACKGROUND_MUSICincome_class_key ~ GN-BA*
3INTERNET_RADIOincome_class_key ~ GN-IN*
4STREAMING_AUDIOincome_class_key ~ GN-*
5TVincome_class_key ~ TV-*
6RADIOincome_class_key ~ RD-*
Catch-allUNCLASSIFIEDMatches every line not caught above.
right_type_std
1 rule1PERFORMANCEright_type_key ~ PR*
Catch-allUNCLASSIFIEDMatches every line not caught above.
Stage 2 — Standard enums to derived values
is_digital
2 rules1truenormalized_income_channel ~ STREAMING_*
2truenormalized_income_channel ~ INTERNET_RADIO
Catch-allfalseMatches every line not caught above.
is_performance
0 rulesNo rules yet — only the catch-all applies.
Catch-alltrueMatches every line not caught above.