This page helps you use the RSA tool effectively and troubleshoot common issues quickly.
Having issues? Check our troubleshooting guide:
RSA Tool User Guide: Best Practices & Common Issues
Documentation for matching logic for better understanding of inclusion/exclusions.
Other helpful llinks:
https://agencypmg.atlassian.net/wiki/x/UgAmmw
https://agencypmg.atlassian.net/wiki/x/UgC1ng
Quick Navigation
COMMON ERRORS & QUICK FIXES
Find your error message or symptom in the table below for fast solutions.
Quick Reference Table
|
Error / Symptom |
Quick Fix |
See Section |
|---|---|---|
|
"CREATE" instead of "EDIT" |
Check labels match exactly in platform and control sheet |
|
|
Duplicate RSAs created |
Separate Google and Bing into different tabs |
|
|
Changes not in platform |
Check if you ran in "Download Sheet" mode |
|
|
"NoneType" error |
Remove blank column headers or scratch notes |
|
|
Duplicate descriptions error |
Make Description and headlines different |
|
|
"dr_error: Unresolved placeholder" |
Check placeholder in RSA tab exists in DR tab |
|
|
403 Permission error |
Share Google Sheet with service account |
|
|
Old promo RSAs still live |
Manually pause in platform |
|
|
"No eligible RSAs" |
Check inclusion/exclusion logic and campaign status |
|
|
Not seeing expected RSAs |
Move specific inclusion rows above generic ones |
|
Topic |
Go To Section |
|---|---|
|
Getting Help |
|
|
Best Practices Overview |
|
|
Pre-Launch QA Checklist |
|
|
Understanding Ad_Status |
|
|
Tool Does Not Auto-Pause |
|
|
When RSAs Are Skipped |
|
|
Dynamic Replacement Quick Tips |
|
|
Troubleshooting Checklist |
LABEL ISSUES → "CREATE" Instead of "EDIT"
Why this happens
The tool needs exact match on all 3:
-
Campaign + Ad Group
-
Label
-
Existing RSA in platform
Common causes
|
Cause |
How to Verify |
Fix |
|---|---|---|
|
Label applied at MCC level |
Check in account's label library (not MCC) |
Recreate label at account level |
|
Multiple labels on RSA |
Check RSA in platform shows 2+ labels |
Remove extra labels, keep only one |
|
Old label in platform |
Platform has Promo_2024, sheet has Promo_2025 |
Update platform labels OR sheet label |
|
No label in platform |
Filter by label in platform → 0 results |
Add label to RSAs in platform |
Steps to fix
-
Log into Google Ads/Bing → Go to Ads
-
Filter by campaign/ad group from control sheet
-
Check Labels column on RSAs
-
Ensure one label matches control sheet exactly
-
Rerun app
DUPLICATE RSAs CREATED
Why this happens
Using one RSA tab for both Google and Bing causes the tool to process all rows for both platforms OR ensure different labels have distinct copy each rsa that you re trying to edit should only have 1 label .
Fix
-
Create two separate tabs: Google RSAs and Bing RSAs
-
Update HQ tab with correct tab names for each engine
-
Add exclusions:
-
Google RSAs tab: Exclude BI
-
Bing RSAs tab: Exclude GG
-
-
Use separate Marketplace apps for Google and Bing
CHANGES NOT APPEARING IN PLATFORM
Check these in order
App mode
-
"Here is the bulk sheet you requested" = Download mode (didn't submit)
-
"RSAs submitted live" = Submit Live mode (did submit)
Partial failures
-
Check for duplicate descriptions or errors in logs
Old promo RSAs
-
Tool doesn't pause/remove old RSAs
-
Manually pause via UI
NOT SEEING EXPECTED RSAs
HOW MATCHING WORKS
The tool reads your control sheet TOP TO BOTTOM and uses the FIRST row that matches.
Example:
Row 1: Include "MENS_CLOTHING" → Campaign "MENS_CLOTHING_OUTERWEAR" matches here → STOPS
Row 2: Include "MENS_CLOTHING_OUTERWEAR" → NEVER REACHED
Once matched, it stops checking other rows. Lower rows are ignored.
QUICK FIX
Put MOST SPECIFIC inclusions first:
Row 1: Include "MENS_CLOTHING_OUTERWEAR_JACKETS"
Row 2: Include "MENS_CLOTHING_OUTERWEAR"
Row 3: Include "MENS_CLOTHING"
NOT generic first:
Row 1: Include "MENS" ← Catches everything
"NONETYPE" ERROR
Error message:
ERROR | 'NoneType' object is not subscriptable
Common causes
-
Blank column headers
-
DR tab not declared in HQ tab
-
Extra data in DR tab past column 26
Fix
-
Delete entire columns that are scratch notes
-
Ensure DR tab name is in HQ tab
-
Delete/clear columns 27+ in DR tab
DUPLICATE DESCRIPTIONS
Symptom
Some RSAs upload, others fail silently.
Cause
Google/Bing reject RSAs with identical descriptions.
Fix
Find rows where Description 2 = Description 3
Change one OR delete Description 3 entirely(or check for duplicate headlines or decription)
DYNAMIC REPLACEMENT ERRORS
Error: dr_error: Unresolved placeholder in headline7
Cause
RSA tab uses {p1} but DR tab doesn't have column p1
Fix
-
Check which placeholder is in error
-
Open DR tab → Verify column exists
-
Add it OR change placeholder
403 PERMISSION ERROR
Error:
ERROR | The caller does not have permission
Fix
-
Go to Alli → Client Settings → Copy Service Account ID
-
Open Google Sheet → Share
-
Paste service account email
-
Give Editor access
-
Rerun
OLD PROMO RSAs NOT PAUSED
Tool only creates/edits RSAs. It does NOT pause/remove old RSAs.
Solution
-
Manually pause old promo RSAs in UI
-
OR set up auto-pause rule
-
OR push new RSAs as PAUSED first,QA, then enable manually
"NO ELIGIBLE RSAs" ERROR
Message:
No eligible RSAs, control_sheet.df_dict['rsa_df'] is empty
Check
-
Campaigns exist in platform with ENABLED status
-
Inclusion/exclusion logic matches actual campaign names
-
Not excluding everything
-
Account ID in HQ tab correct
-
Engine selection correct
-
Start and end date is within the window
GETTING HELP
Self-service
-
Check the sections above for common errors
-
Review the Pre-Launch QA Checklist
-
Run in Download Sheet mode to debug safely
BEST PRACTICES
Always Start with Download Sheet Mode
Workflow
-
Update control sheet
-
Run app in Download Sheet mode
-
QA bulk sheet in Slack
-
Fix any issues → repeat
-
Once clean → Run in Submit Live mode
Why: Prevents live mistakes. Download mode doesn't submit to platform.
Use Separate Tabs for Google and Bing
Setup
-
Create: Google RSAs tab and Bing RSAs tab
-
Update HQ tab with correct tab names
-
Use separate Marketplace apps for each engine
-
Add exclusions:
-
Google excludes BI
-
Bing excludes GG
-
Reference: Land's End example (Alli RSAs: Lands' End)
Label Management
Rules
-
Apply at account level (not MCC)
-
Apply to ad level (not campaign/ad group)
-
One label per RSA (no multiple labels)
-
Exact match between control sheet and platform
To verify
-
Google Ads: Ads & Extensions → Ads → Check Labels column
-
Bing: Ads → Responsive search ads → Check Labels
Control Sheet Hygiene Checklist
Before every run
☐ No blank column headers
☐ No special characters in tab names (use RSAs not RSA's)
☐ No trailing spaces in labels/campaign names
☐ DR tab columns 27+ are empty
☐ DR tab name declared in HQ tab (even if not using DR)
Understanding Edit vs. Create
The tool EDITs when all 3 match:
-
Campaign ID + Ad Group ID
-
Label (exact)
-
RSA exists in platform
Otherwise → CREATEs new RSA
|
Platform Label |
Sheet Label |
Result |
|---|---|---|
|
Promo_2024 |
Promo_2024 |
✅ EDIT |
|
Promo_2024 |
Promo_2025 |
❌ CREATE |
|
Promo, LinkChecker |
Promo |
❌ CREATE |
|
(no label) |
Promo_2024 |
❌ CREATE |
Inclusion/Exclusion Best Practice
Put most specific first:
✅ Good
Row 1: Include "MENS_CLOTHING_OUTERWEAR_JACKETS"
Row 2: Include "MENS_CLOTHING_OUTERWEAR"
Row 3: Include "MENS_CLOTHING"
❌ Bad
Row 1: Include "MENS" ← Catches everything
Row 2: Include "MENS_CLOTHING" ← Never matches
PRE-LAUNCH QA CHECKLIST
Use before every promo flip or RSA update.
Before Running App
☐ Inclusions/exclusions are correct
☐ Labels match platform
☐ No blank column headers
☐ No duplicate descriptions
☐ DR placeholders are valid (if using)
☐ Start/End dates correct
☐ Separate tabs for Google/Bing
QA Bulk Sheet (Download Mode)
☐ Action column: Mostly "EDIT" (unless new ad groups)
☐ Campaigns/ad groups match expectations
☐ Copy is correct (headlines, descriptions, paths)
☐ No unresolved placeholders like {p1}
☐ Labels and dates correct
☐ Spot check 5-10 rows vs control sheet
After Submit Live
☐ Check Slack for success message
☐ Verify in platform: Filter by promo headline
☐ Spot check 3-5 key ad groups
☐ Use Change History to confirm updates
☐ Manually pause old promo RSAs (tool doesn't do this)
Optional: Push as Paused First
For high-risk launches:
-
Set Ad_Status = "PAUSED" in control sheet
-
Submit Live
-
QA in platform while paused
-
Manually enable once confirmed
UNDERSTANDING "AD_STATUS" FIELD
Common misconception: Setting Ad_Status = "ENABLED" filters which ads to pull from platform
Reality:
-
Tool fetches all RSAs (enabled, paused, removed) matching inclusion/exclusion
-
Ad_Status only sets status of newly created RSAs
ENABLED → new RSAs created as enabled
PAUSED → new RSAs created as paused
TOOL DOES NOT AUTO-PAUSE OLD RSAs
What the tool does
-
Edit RSA content (if label matches)
-
Create new RSAs
-
Set status for newly created RSAs
What it does NOT do
-
Pause old RSAs
-
Remove old RSAs
-
Update status of existing RSAs with different labels
For promo flips:
-
Manually pause old promo RSAs in UI after flip
-
OR set up auto-pause rule based on end date
-
OR use Google Ads scripts
WHEN RSAs ARE SKIPPED (EXPECTED BEHAVIOR)
Message:
"Removed X identical RSAs from both user and UI"
Why:
RSAs in platform have identical content to control sheet (same headlines, descriptions, paths, label, campaign/ad group)
This is NOT an error - it's efficient. No need to re-upload identical RSAs.
To force update:
Change at least one headline or description in control sheet
DYNAMIC REPLACEMENT QUICK TIPS
|
Error |
Cause |
Fix |
|---|---|---|
|
"Unresolved placeholder" |
RSA uses {p5}, DR has no p5 column |
Add p5 to DR tab OR change placeholder |
|
"DR tab is likely blank" |
DR tab not declared in HQ |
Add DR tab name to HQ tab |
|
NoneType in DR |
Extra columns with blank headers |
Delete columns 27+ in DR tab |
DR Tab Rules
-
Column headers must match placeholders exactly (p1, s3, etc.)
-
No extra data past column 26
-
One row per campaign (or ad group)
TROUBLESHOOTING CHECKLIST
Campaign/ad group missing from bulk sheet?
☐ Check if earlier row with broader inclusion caught it first
☐ Move your specific row ABOVE the generic row
☐ Verify campaign names match (check for _ vs & or other differences)
☐ Confirm campaigns exist in platform with ENABLED status
Wrong campaigns appearing?
☐ Use exclusions to narrow matches
Example: Include "SHOES" → Exclude "BOOTS" (if you want SHOES only, not SHOES_AND_BOOTS)
☐ For Google/Bing separation: Google excludes "BI", Bing excludes "GG"
Entire bulk sheet is empty?
☐ Check Account ID in HQ tab is correct
☐ Verify engine selection (Google vs Bing)
☐ Confirm you're not excluding everything (Include "X" + Exclude "X" = nothing)
ALWAYS TEST: Run Download Sheet mode after changing inclusion/exclusion logic to verify before Submit Live.