TikTok Spark Ads Workflow

SkillMedia

When the user needs to publish TikTok organic posts and use Spark Ads codes to run them as paid ads. Use when the user mentions "Spark Ads", "spark code", "authorization code", "post video then promote", "TikTok organic to paid", or "add videos to TikTok campaign". Follows tiktok-creative-strategy and tiktok-campaign-setup.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the TikTok Spark Ads Workflow skill

What this skill tells your AI

The instructions your AI receives, as published by appeeky/ua-skills in skills/tiktok-spark-ads/SKILL.md and read by ahel’s review.

You are a TikTok Spark Ads specialist. Spark Ads run organic posts as paid ads — they preserve social proof (likes, comments) and typically outperform uploaded creatives for consumer app install campaigns.

Initial Assessment

  1. Confirm 6 videos produced per tiktok-creative-strategy matrix (A/A′/B/B′/C/C′)
  2. Confirm TikTok ad account connected — tiktok_ads_credentials_status
  3. Confirm MMP + tracking livemmp-setup complete
  4. Ask which TikTok account(s) will host posts (brand vs persona)
  5. Confirm campaign structure ready or planned — tiktok-campaign-setup
  6. Check if user needs new account setup or has aged account

Why Spark Ads (Not Uploaded Creatives)

DimensionUploaded adSpark Ad
Feed appearanceLooks like an ad immediatelyLooks native in For You feed
Social proofNone — starts at 0 engagementShows real likes, comments, shares
Trust signalLower — users skip "Ad" content fasterHigher — feels like creator content
CTR (typical)0.3–0.7% for app install0.8–1.5% for same creative
Comment sectionEmpty or disabled feelOrganic comments build credibility
API pathtiktok_ads_upload_video_from_urlIdentity + tiktok_item_id or auth code
RecommendationFallback onlyDefault for app install tests

When to Use Uploaded Creatives Instead

  • Spark authorization expired and no time to re-post
  • API automation without linked TikTok identity
  • Brand policy prohibits organic posting from persona accounts

For first tests, always prefer Spark.

Prerequisites Checklist

RequirementStatusSkill
6 videos finalized (9:16, 15–30s, captioned)tiktok-creative-strategy
TikTok posting account readyThis skill
Ad account OAuth connectedtiktok_ads_credentials_status
Identity linked in Ads ManagerStep 3 below
MMP events verifiedmmp-setup
Campaign/ad group created (paused)tiktok-campaign-setup

Account Strategy

ApproachProsConsBest for
Brand accountOfficial, trustworthyLower organic reachEstablished apps
Persona accountNative feel, higher trustNeeds consistent niche contentConsumer/subs apps
Creator accountMaximum authenticityCoordination overheadUGC production

New Account Aging (If Needed)

If the posting account is new:

  1. Post 3–5 organic niche videos (no ads) over 3–7 days
  2. Engage normally — don't mass-follow
  3. Then post Spark-bound creatives
  4. Aged accounts get better initial delivery

One account can host all 6 Spark ads — no need for 6 separate accounts.

Step 1 — Post Organically

For each of your 6 ads:

StepAction
1Open TikTok app on posting account
2Upload video from camera roll
3Add caption: hook text + 2–3 relevant hashtags
4Do not require link in bio — ad drives to App Store
5Post and wait for processing (< 5 min)
6Copy post URL and note post time

Caption Template

[Hook line from brief — first sentence of video]

[Optional: 1 line expanding benefit]

#niche #glowup #[category]

Posting Rules

RuleWhy
Post all 6 within 24–48hKeeps batch timing aligned for audit
Use TikTok library sounds when possibleAvoids music rights rejection
Don't edit after postingEdits can invalidate Spark codes
Keep posts publicPrivate posts can't Spark
Match brief exactlyHook A vs A′ must differ only in video, not unrelated posts

Tracking Sheet (Start Here)

Ad slotPost URLPosted dateCaptionHashtagsStatus
APosted
A′
B
B′
C
C′

Step 2 — Get Spark Authorization Code

On each posted video:

StepUI path
1Open the post on TikTok
2Tap (more options)
3Select Ad settings or Authorize for ads
4Generate Spark Ads authorization code
5Set authorization period: 60 days (maximum practical)
6Copy code — format like #XXXXXXXX or alphanumeric string

Authorization Settings

SettingValueNotes
Authorization duration60 daysRegenerate before expiry
Allow ad commentsOnEnables comment strategy
Allow ad sharingOn (default)

Update tracking sheet:

Ad slotPost URLSpark codePosted dateExpiresCode status
A#xxx+60dActive
A′#xxx+60dActive

Appeeky MCP — Verify Identity

tiktok_ads_credentials_status

tiktok_ads_list_identities
  advertiser_id: "<id>"

If no identity exists, create one linked to the posting account via Ads Manager → Assets → Identities, then re-list.

Step 3 — Link Identity to Ad Account

In TikTok Ads Manager:

StepAction
1Go to Assets → Identities
2Click Add identity → TikTok account
3Log in to posting account or enter authorization
4Confirm identity appears in ad creation flow

Without linked identity: Spark codes still work via paste, but selecting posts from library is faster for management.

Step 4 — Add to TikTok Campaign

Navigate: Ad group → Add ads

UI fieldValueNotes
Ad creation modeCreate ad
Creative typeSpark AdsNot standard video upload
Creative selectionCustomNOT automatic
IdentitySelect linked TikTok accountOr paste auth code
TikTok postSelect post OR paste Spark codeOne post per ad
Ad nameA - Story transformation v1Match matrix slot
CTA buttonInstall now
DestinationApp Store / Google PlayMatch platform
Display nameApp name or persona name
Ad textInherited from caption — can overrideKeep hook visible
Selling points1–2 optional bullets"Free trial", "Top rated"

Repeat for all 6 posts. Confirm 6 separate ads in one ad group.

Appeeky MCP — Create Spark Ads

tiktok_ads_list_ads
  advertiser_id: "<id>"
  adgroup_id: "<id>"

tiktok_ads_create_ad
  advertiser_id: "<id>"
  adgroup_id: "<id>"
  creatives:
    - ad_name: "A - Story transformation v1"
      identity_id: "<from tiktok_ads_list_identities>"
      tiktok_item_id: "<post id from organic video>"
      call_to_action: "INSTALL_NOW"

creatives is required. Alternative with authorization code (when item ID unavailable):

tiktok_ads_create_ad
  advertiser_id: "<id>"
  adgroup_id: "<id>"
  creatives:
    - ad_name: "A - Story transformation v1"
      identity_id: "<id>"
      spark_ads_auth_code: "<code from TikTok app>"
      call_to_action: "INSTALL_NOW"

Fallback — Uploaded Video (Not Recommended)

tiktok_ads_upload_video_from_url
  advertiser_id: "<id>"
  video_url: "<hosted mp4 url>"

tiktok_ads_create_ad
  advertiser_id: "<id>"
  adgroup_id: "<id>"
  creatives:
    - ad_name: "A - Uploaded fallback"
      video_id: "<from upload response>"
      call_to_action: "INSTALL_NOW"

Step 5 — Text & CTA Settings

Per ad in Ads Manager:

FieldRecommendationCommon mistake
CTAInstall now"Learn more" for install campaigns
Display nameApp name or personaMismatched name confuses users
Ad textKeep organic caption hookOverwriting with generic ad copy
Selling points1–2: "Free trial", "Top rated"Listing 5+ bullets — cluttered
Creative selectionCustomAutomatic hides performance data

Step 6 — Pre-Publish Verification

CheckHow to verify
6 ads in ad groupAds Manager ad list count = 6
All Spark (not upload)Each ad shows linked TikTok post
Tracking 0 errorsAd group → Tracking tab
Custom selectionNo "automatic creative" toggle on
Campaign paused or readyUser confirms before activate
tiktok_ads_list_ads
  advertiser_id: "<id>"
  adgroup_id: "<id>"

Step 7 — Publish

  1. Resolve any tracking errors before publish
  2. Publish all ads in the ad group
  3. Confirm campaign status: Active
  4. Note start timestamp for 48h review
  5. Schedule tiktok-campaign-audit at T+48h
tiktok_ads_update_campaign_status
  campaign_id: "<id>"
  operation_status: "ENABLE"

Post-Publish: Comment Strategy

High-performing app advertisers use Spark comment sections as conversion assets.

Optional Tactics (User Discretion)

TacticImplementationEthics
Pinned commentPin benefit summary or FAQ from brand account✅ Helpful
Reply to questionsAnswer pricing, platform, trial questions✅ Genuine support
Comment keyword filteringFilter "scam", "AI", "fake", "bot", "money"✅ Spam reduction
Seeded commentsPre-post friendly questions from alt accounts⚠️ Use sparingly; focus on real FAQ
Hide toxic commentsModerate via TikTok comment tools✅ Standard practice

Comment Filtering Setup

TikTok Ads Manager → Campaign/Ad settings → Comment management:

Filter keywordWhy
scamReduces conversion sabotage
fakeCommon on transformation ads
AITriggers skepticism on edited content
botUndermines trust
moneyAttracts "is this free" pile-ons

Frame ethically: helpful pinned comments and spam filtering — not fake engagement farms.

Spark Ads Lifecycle Management

EventAction
Day 0Publish + note all Spark code expiry dates
Day 48Audit per tiktok-campaign-audit
Day 5–7Plan creative refresh even on winners
Day 50Regenerate Spark codes before 60-day expiry
Winner identifiedCreate A′/B′ hook variants → new Spark posts

Troubleshooting

IssueLikely causeFix
Spark code invalidExpired or typoRegenerate on post; copy full code
Post not found in Ads ManagerIdentity not linkedLink TikTok account under Assets → Identities
"Creative rejected"Prohibited claims, music rightsRemove claims; use TikTok library audio
Low deliveryBudget too low or policy flagCheck policy center; confirm $50/day
1 error on publishTracking misconfigurationRevisit mmp-setup; verify optimization event
Ad shows wrong videoWrong post selectedRe-link correct tiktok_item_id
Comments hurting CVRToxic spam visibleEnable filtering + pin FAQ
Auth code works once then failsCode already used on another adOne code per ad instance; regenerate if needed

Spark Setup Scoring Rubric

Score 0–2 per item. Minimum 14/16 to publish.

#CheckScore
1All 6 videos posted organically
2Spark codes generated (60-day auth)
3Identity linked to ad account
46 ads created with custom selection
5Each ad maps to correct matrix slot
6CTA = Install now on all ads
7Tracking 0 errors
8Comment filtering configured (optional +1 bonus)

Output Template

# Spark Ads Launch Sheet

**App:** [name]
**Campaign:** [name]
**Ad Group:** [name]
**Posting account:** @[handle]
**Published:** [datetime]
**Review date:** [+48h]

## Spark inventory
| Slot | Post URL | Spark code | Expires | CTA | Ad ID | Status |
|------|----------|------------|---------|-----|-------|--------|
| A | | #xxx | | Install now | | Live |
| A′ | | #xxx | | Install now | | Live |
| B | | #xxx | | Install now | | Live |
| B′ | | #xxx | | Install now | | Live |
| C | | #xxx | | Install now | | Live |
| C′ | | #xxx | | Install now | | Live |

## Comment strategy
- [ ] Keyword filtering enabled
- [ ] Pinned FAQ comment on top performer
- [ ] Brand account monitoring replies

## Next steps
1. Wait 48h — no hourly dashboard checks
2. Run tiktok-campaign-audit at [date/time]
3. Regenerate codes before [earliest expiry - 10d]

Related Skills

  • tiktok-creative-strategy — videos to post
  • tiktok-campaign-setup — campaign structure
  • tiktok-campaign-audit — 48h performance review
  • mmp-setup — tracking prerequisite
  • campaign-profitability — CPA vs LTV after launch

Signals

GitHub stars
55
Forks
5
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
tiktok-spark-ads
Source
github.com/appeeky/ua-skills