> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Let Replit build your TikTok Ads campaign

> Promote your published app with an existing video. Set a TikTok Ads campaign budget and schedule, then check your campaign's performance in a Replit chat.

export const Connectors = ({items}) => <div style={{
  margin: "8px 0 20px"
}}>
    <style>{`
      .connectors-list, .connectors-list * { margin-top: 0 !important; margin-bottom: 0 !important; }
      .connectors-row {
        display: flex !important;
        align-items: flex-start !important;
        gap: 10px !important;
        padding: 4px 0 !important;
        min-height: 0 !important;
        height: auto !important;
      }
      .connectors-row img {
        width: 20px !important;
        height: 20px !important;
        max-width: 20px !important;
        max-height: 20px !important;
        margin: 2px 0 0 !important;
        display: block !important;
      }
    `}</style>
    <div className="connectors-list">
      {items.map((item, i) => <div key={item.id} className="connectors-row" style={{
  borderTop: i === 0 ? "none" : "1px solid rgba(130,130,130,0.22)"
}}>
          <img src={`/images/connectors/${item.id}.svg`} alt="" width={20} height={20} />
          <div style={{
  minWidth: 0
}}>
            <div>
              <strong>{item.name}</strong>
              {item.why ? <span style={{
  opacity: 0.72
}}> · {item.why}</span> : null}
            </div>
            {item.auth === "api-key" ? <div style={{
  fontSize: "11.5px",
  lineHeight: 1.35,
  color: "#F26207",
  marginTop: "2px"
}}>
                Not a native connector. Agent will ask for your API key.
              </div> : null}
          </div>
        </div>)}
    </div>
  </div>;

export const AiPrompt = ({children}) => {
  return <CodeBlock className="relative block max-w-full overflow-x-hidden font-sans !whitespace-pre-wrap !break-words" style={{
    overflowWrap: "anywhere",
    wordBreak: "break-word"
  }}>
      <div className="pr-7" style={{
    whiteSpace: "pre-wrap",
    overflowWrap: "anywhere",
    wordBreak: "break-word"
  }}>
        {children}
      </div>
    </CodeBlock>;
};

Your app is live, and you've already created a promotional video. Use that video
to run a TikTok ad. Ask Replit to create a campaign with a budget and schedule,
then report how it performs, all from a chat in Replit.

Replit connects to TikTok Ads through its MCP integration. You describe the
campaign; Replit uses the connection to work with your advertising account.

## Best for

* Builders promoting a newly published app.
* Small businesses sending TikTok visitors to a website or online store.
* Marketers who want to set up a campaign and check results without switching tools for every step.

## Connectors

<Connectors
  items={[
{
  id: "tiktok-ads",
  name: "TikTok Ads",
  why: "Create campaigns and read advertising performance through MCP",
},
]}
/>

## Before you start

Before you begin, you'll need:

* A published app and a TikTok Ads account with billing set up.
* A budget and an idea of when you'd like the campaign to run.
* A finished promotional video you have permission to use.

Replit will help you work out the campaign details. This guide focuses on website
visits; tracking purchases or sign-ups requires additional setup. Advertising
costs are separate from Replit usage.

## Prompt Replit

<AiPrompt>
  Help me promote \[App URL] on TikTok using this video: \[Video URL]. Ask me about
  my budget, campaign dates, and audience. Don't launch anything until I approve.
</AiPrompt>

## What to expect

<Steps>
  <Step title="Replit connects to TikTok Ads">
    If you haven't connected your account yet, Replit asks you to do so. Ask it
    to check the account's currency, time zone, and billing readiness.
  </Step>

  <Step title="It asks a few questions">
    Tell Replit how much you want to spend, when the campaign should run, and
    who you want to reach. It clarifies whether your budget is total or daily.
  </Step>

  <Step title="It prepares the campaign for review">
    Replit asks for a video download link or helps select a video you've already
    uploaded to TikTok Ads Manager. It drafts the ad text and shows you the
    selected video, destination URL, audience, budget, and schedule for review.
  </Step>

  <Step title="You approve the campaign">
    Once you're happy with the plan, ask Replit to create and schedule it.
    Ask for the campaign ID and check its status in TikTok Ads Manager.
  </Step>

  <Step title="Ask how it's doing">
    Return to the chat and ask how much you've spent, how many impressions
    your ad received, and how many people clicked through to your site.
  </Step>
</Steps>

After you approve it, you have a TikTok campaign built around your existing
video. TikTok's ad review and delivery status determine when it starts running.

## Make it work for you

<AiPrompt>
  Keep the same video. Draft two versions of the ad text and recommend one for
  \[audience]. Don't upload anything or create the campaign until I approve.
</AiPrompt>

<AiPrompt>
  How has my campaign \[campaign ID] performed over the last 30 days?
  Show spend, impressions, website clicks, and cost per website
  click where available. Suggest a next step, but don't change the campaign.
</AiPrompt>

## Troubleshooting

<AccordionGroup>
  <Accordion title="The budget or billing check blocks setup">
    Ask Replit to check TikTok's minimum budget. If your balance is empty, check
    billing in Ads Manager. Approve any budget changes before proceeding.
  </Accordion>

  <Accordion title="TikTok reports a pending contract or account setup">
    Complete account setup and billing in TikTok Ads Manager or Business Center,
    then ask Replit to check again.
  </Accordion>

  <Accordion title="Replit can't access the video">
    Share a direct download link that needs no sign-in, or upload the video to
    TikTok Ads Manager and give Replit its asset name or ID.
  </Accordion>

  <Accordion title="The campaign exists, but there are no results yet">
    Check campaign status, start date, and billing in Ads Manager. Compare reports
    using matching dates and time zones. Clicks don't confirm conversions.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Design a landing page" href="/use-cases/design-landing-page">
    Prepare the page people will visit after clicking your ad.
  </Card>

  <Card title="Create social icons and banners" href="/use-cases/create-social-kit">
    Prepare matching profile and cover assets for your launch.
  </Card>
</CardGroup>
