Breadcrumbs

RSA Tool User Guide: Best Practices & Common Issues

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

LABEL ISSUES → "CREATE" Instead of "EDIT"

Duplicate RSAs created

Separate Google and Bing into different tabs

DUPLICATE RSAs CREATED

Changes not in platform

Check if you ran in "Download Sheet" mode

CHANGES NOT APPEARING IN PLATFORM

"NoneType" error

Remove blank column headers or scratch notes

"NONETYPE" ERROR

Duplicate descriptions error

Make Description and headlines different

DUPLICATE DESCRIPTIONS

"dr_error: Unresolved placeholder"

Check placeholder in RSA tab exists in DR tab

DYNAMIC REPLACEMENT ERRORS

403 Permission error

Share Google Sheet with service account

403 PERMISSION ERROR

Old promo RSAs still live

Manually pause in platform

OLD PROMO RSAs NOT PAUSED

"No eligible RSAs"

Check inclusion/exclusion logic and campaign status

"NO ELIGIBLE RSAs" ERROR

Not seeing expected RSAs

Move specific inclusion rows above generic ones

NOT SEEING EXPECTED RSAs

Topic

Go To Section

Getting Help

GETTING HELP

Best Practices Overview

BEST PRACTICES

Pre-Launch QA Checklist

PRE-LAUNCH QA CHECKLIST

Understanding Ad_Status

UNDERSTANDING "AD_STATUS" FIELD

Tool Does Not Auto-Pause

TOOL DOES NOT AUTO-PAUSE OLD RSAs

When RSAs Are Skipped

WHEN RSAs ARE SKIPPED

Dynamic Replacement Quick Tips

DYNAMIC REPLACEMENT QUICK TIPS

Troubleshooting Checklist

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

  1. Log into Google Ads/Bing → Go to Ads

  2. Filter by campaign/ad group from control sheet

  3. Check Labels column on RSAs

  4. Ensure one label matches control sheet exactly

  5. 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

  1. Go to Alli → Client Settings → Copy Service Account ID

  2. Open Google Sheet → Share

  3. Paste service account email

  4. Give Editor access

  5. 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.