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

# Campaign Migration

> Migrating existing campaigns from other ad platforms to Topsort

export const LastUpdated = ({date, lang = "en"}) => {
  const translations = {
    en: "Last updated:",
    es: "Última actualización:",
    pt: "Última atualização:",
    fr: "Dernière mise à jour:",
    de: "Zuletzt aktualisiert:"
  };
  const label = translations[lang] || translations.en;
  return <>
<style>{`
.last-updated-component {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 10px 16px;
border-radius: 8px;
margin-top: 12px;
margin-bottom: 16px;
font-size: 14px;
background-color: rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0, 0, 0, 0.12);
color: rgba(0, 0, 0, 0.75);
line-height: 1;
}

        .last-updated-component svg {
          flex-shrink: 0;
          vertical-align: middle;
        }

        .last-updated-component span {
          display: inline-flex !important;
          align-items: center !important;
          line-height: 1 !important;
        }

        [data-theme="dark"] .last-updated-component {
          background-color: #3a3a3a;
          border: 2px solid #888888;
          color: #ffffff;
        }

        [data-theme="dark"] .last-updated-component svg {
          stroke: #ffffff;
        }
      `}</style>
      <div className="last-updated-component">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <circle cx="12" cy="12" r="10" />
          <polyline points="12 6 12 12 16 14" />
        </svg>
        <span>
          <strong style={{
    fontWeight: 600
  }}>{label}</strong> 
          <time dateTime={date}>{date}</time>
        </span>
      </div>
    </>;
};

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Campaign migration is the process of transferring existing advertising campaigns from a client's current ad platform to Topsort. This ensures a smooth transition that maintains campaign continuity while clients onboard to our advertising ecosystem.
</div>

## Problem

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Many clients already operate established advertising businesses with active campaigns on other platforms. When transitioning to Topsort, they need their existing campaign data migrated to:
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * **Maintain business continuity**: Avoid disruption to ongoing advertising efforts
  * **Preserve advertiser relationships**: Ensure advertisers experience a seamless transition
  * **Enable immediate productivity**: Allow advertisers to continue their campaigns without starting from scratch
</div>

<Note>
  This migration focuses on active campaign structure and settings only.
  Historical performance data and past metrics from previous platforms are not
  transferred, ensuring a clean start within the Topsort ecosystem.
</Note>

## Solution

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  We provide a **script-based automation solution** that reads campaign data from structured files and automatically creates equivalent campaigns within Topsort's Campaign Service. This approach transforms campaign data from the client's previous platform into fully functional campaigns in our ecosystem.
</div>

### File-Based Migration Approach

<Note>
  The file-based approach means clients export their campaign data into a
  standardized CSV (comma-separated values) file format, rather than connecting
  systems directly through APIs. This file serves as the bridge between the old
  platform and Topsort.
</Note>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  **How It Works:**
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  1. **Data Export:** Client manually exports campaign details from their current platform into a CSV file
  2. **File Transfer:** Client provides the CSV file directly to Topsort
  3. **Script Processing:** Our automated scripts read the CSV data and create campaigns via Topsort's APIs
  4. **Validation:** The newly created campaigns are verified against the original data
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  **Why This Approach:**
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * **Platform Limitations:** Many legacy ad platforms lack modern APIs for data extraction
  * **Sunset Systems:** Platforms being discontinued often have limited or no technical support
  * **Reliability:** File-based transfer ensures complete data capture without API rate limits or connectivity issues
  * **Flexibility:** CSV format can accommodate various data structures from different source platforms
  * **Control:** Clients have full visibility into exactly what data is being migrated
</div>

### Technical Implementation

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Our migration scripts are designed to:
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * **Parse CSV data** with robust error handling and validation
  * **Map data fields** from source platform structure to Topsort's campaign schema
  * **Create campaigns** using Topsort's Campaign APIs with proper authentication
  * **Apply standards** such as setting all campaigns to autobidding and listing format
  * **Generate reports** of successful migrations and any issues encountered
</div>

## Migration Process

<Steps>
  <Step title="Data Assessment and Planning">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      **Evaluate Current Campaign Portfolio**
    </div>

    * Review existing campaigns and their complexity
    * Identify which campaigns should be migrated
    * Assess data export capabilities from current platform
    * Develop migration timeline and resource requirements

    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
       
    </div>
  </Step>

  <Step title="Data Export and Preparation">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      **Standard Campaign Information Required:**
    </div>

    * Campaign identification (name, unique ID, advertiser/vendor info)
    * Campaign configuration (type, format, targeting settings)
    * Budget settings (amount, type: daily/weekly/monthly)
    * Campaign duration and end dates
    * Product information and identifiers

    <Note>
      This method is used when the previous ad platform lacks available APIs for
      direct data transfer, is being discontinued, or has limited support for
      data extraction.
    </Note>
  </Step>

  <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
     
  </div>

  <Step title="Sample Testing">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      **Validation Process:**
    </div>

    * Client provides a small sample of campaigns (typically 3-5)
    * Campaigns are processed in our testing environment
    * Client reviews migrated campaigns through Topsort interface
    * Any adjustments are made based on feedback

    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
       
    </div>
  </Step>

  <Step title="Full Migration Execution">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      **Processing Standards:**
    </div>

    * All migrated campaigns are marked with special identifiers for tracking
    * Campaigns start fresh without historical bidding data
    * Targeting settings are standardized to platform best practices
    * Original budget and duration settings are maintained

    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
       
    </div>
  </Step>

  <Step title="Verification and Go-Live">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      **Quality Assurance Steps:**
    </div>

    * Verify all campaign details transferred correctly
    * Confirm campaigns operate as expected
    * Test advertiser interface functionality
    * Obtain final client approval before activation
  </Step>
</Steps>

## Data Requirements

### Required Campaign Fields

| Field         | Description                                           | Example                         |
| ------------- | ----------------------------------------------------- | ------------------------------- |
| Vendor ID     | Advertiser identifier in your catalog                 | `vendor-123`                    |
| Campaign Name | Descriptive campaign name                             | `Summer Promotions 2025`        |
| Campaign Type | Always set to `autobidding`                           | `autobidding`                   |
| Ad Format     | Always set to `listing` for migrations                | `listing`                       |
| Targeting     | Set to `autotargeting` with product/category triggers | `autotargeting`                 |
| Budget Amount | Campaign budget value                                 | `400`                           |
| Budget Type   | Budget frequency                                      | `monthly`, `daily`, `weekly`    |
| End Date      | Campaign end date                                     | `2025-08-15T23:55:00+02:00`     |
| External ID   | Reference number from previous platform               | `PO-12345`                      |
| Product IDs   | Array of product IDs from your catalog                | `[1001590556, 1001590557, ...]` |

### CSV Format Example

```csv theme={null}
Vendor_id,campaignType,name,promotionType.adFormat,triggers,budget.amount,budget.type,endDate,externalCampaignID,productIDs
vendor-123,autobidding,Summer Promotions 2025,listing,autotargeting,400,monthly,2025-08-15T23:55:00+02:00,PO-12345,"1001590556,1001590557,1001590559"
```

## Contingency Planning

### Rollback Procedures

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  If issues arise during or after migration, campaigns can be quickly reversed:
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  1. **Identification:** Migrated campaigns are easily identifiable through special marking
  2. **Removal Process:** Automated scripts can remove migrated campaigns if needed
  3. **Verification:** Confirm successful rollback through system checks
  4. **Communication:** Notify all stakeholders of rollback completion
</div>

### Risk Mitigation Strategies

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * **Backup Strategy:** Original campaign data is preserved throughout the process
  * **Phased Approach:** Large migrations are split into manageable batches
  * **Testing Environment:** All migrations are tested before production deployment
  * **Expert Support:** Technical team available throughout the migration process
</div>

## Success Metrics

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  Migration success is measured by:
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  * **Data Accuracy:** 100% of campaign settings transferred correctly
  * **Advertiser Satisfaction:** Smooth transition experience with minimal learning curve
  * **Timeline Adherence:** Migration completed within agreed timeframe
  * **Post-Migration Performance:** Campaigns operating effectively in new environment
</div>

## Next Steps

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  For clients considering campaign migration:
</div>

<div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
  1. **Contact your account manager** to discuss migration requirements
  2. **Schedule assessment** of current campaign portfolio
  3. **Plan migration timeline** based on business priorities
  4. **Begin data preparation** and catalog integration processes
</div>

<Warning>
  Ensure your product catalog is fully integrated and validated before beginning
  campaign migration to avoid data mapping issues.
</Warning>

***

<LastUpdated date="2025-11-18" />
