273 lines
7.4 KiB
Markdown
273 lines
7.4 KiB
Markdown
# Facebook Ads CSV Bulk Upload Generator
|
||
|
||
Complete automation for Facebook Ads Manager bulk uploads. Every API field mapped, validated, and ready to import.
|
||
|
||
## 🎯 What This Does
|
||
|
||
This system generates perfectly-formatted CSV files for Meta Ads Manager bulk upload with:
|
||
- **ALL 127+ API fields** properly mapped
|
||
- **Built-in validation** for every field constraint
|
||
- **Sample campaigns** ready to customize
|
||
- **Complete field reference** documentation
|
||
|
||
## 🚀 Quick Start
|
||
|
||
### 1. Generate Your First Campaign
|
||
|
||
```bash
|
||
python3 fb_ads_csv_generator.py
|
||
```
|
||
|
||
This creates `facebook_ads_bulk_upload.csv` with a complete traffic campaign example.
|
||
|
||
### 2. Generate Multi-Variation Test
|
||
|
||
```bash
|
||
python3 generate_example_campaign.py
|
||
```
|
||
|
||
This creates `openclaw_creative_test_campaign.csv` with 6 ads testing 3 audiences × 2 creatives.
|
||
|
||
### 3. Import to Facebook
|
||
|
||
1. Open Meta Ads Manager
|
||
2. Click the **⋮ menu** (top right)
|
||
3. Select **Import & Export** → **Import Ads**
|
||
4. Upload your CSV file
|
||
5. Upload your creative files when prompted
|
||
6. Review and publish!
|
||
|
||
## 📚 Files Included
|
||
|
||
| File | Purpose |
|
||
|------|---------|
|
||
| `fb_ads_csv_generator.py` | Core generator with all field mappings |
|
||
| `generate_example_campaign.py` | Multi-variation example generator |
|
||
| `FB_ADS_FIELD_REFERENCE.md` | Complete field documentation (127+ fields) |
|
||
| `facebook_ads_bulk_upload.csv` | Single ad example (ready to import) |
|
||
| `openclaw_creative_test_campaign.csv` | 6-ad testing campaign (ready to import) |
|
||
| `README_FB_ADS_BULK.md` | This file |
|
||
|
||
## 🎨 Customizing Campaigns
|
||
|
||
### Edit the Python Generator
|
||
|
||
Open `fb_ads_csv_generator.py` and modify the example at the bottom:
|
||
|
||
```python
|
||
campaign_rows = generator.generate_traffic_campaign(
|
||
campaign_name="YOUR CAMPAIGN NAME",
|
||
ad_set_name="YOUR AD SET NAME",
|
||
ad_name="YOUR AD NAME",
|
||
daily_budget=50.00, # Change budget here
|
||
target_url="https://your-website.com",
|
||
ad_copy={
|
||
'body': "Your primary text here",
|
||
'title': "Your headline",
|
||
'caption': "Your link description"
|
||
},
|
||
image_file="your_image_1080x1080.jpg"
|
||
)
|
||
```
|
||
|
||
### Or Edit the CSV Directly
|
||
|
||
Open the generated CSV in Excel/Google Sheets and:
|
||
- Duplicate rows for more ads
|
||
- Change targeting (Age, Interests, Locations)
|
||
- Swap creative files
|
||
- Adjust budgets
|
||
- Modify copy
|
||
|
||
**Just follow the validation rules in the field reference!**
|
||
|
||
## 📖 Field Reference
|
||
|
||
See `FB_ADS_FIELD_REFERENCE.md` for complete documentation of all 127+ fields including:
|
||
|
||
- **Campaign fields** (8 total)
|
||
- **Ad Set fields** (27 total) - targeting, placements, scheduling, conversion tracking
|
||
- **Ad fields** (30 total) - creative, copy, CTAs, UTM tracking
|
||
- **Carousel fields** (40 total) - up to 10 cards
|
||
- **Multi-language DLO** (20 total) - 5 languages
|
||
- **Partnership/Creator ads** (2 total)
|
||
|
||
## ⚡ Advanced Features Supported
|
||
|
||
### Dynamic Creative (Advantage+)
|
||
Test multiple creative variations automatically:
|
||
```python
|
||
row["Dynamic Creative"] = "TRUE"
|
||
row["Additional Body 1"] = "Variation 1 text"
|
||
row["Additional Body 2"] = "Variation 2 text"
|
||
row["Additional Title 1"] = "Variation 1 headline"
|
||
# etc.
|
||
```
|
||
|
||
### Carousel Ads
|
||
Multi-card product showcases:
|
||
```python
|
||
row["Carousel Card 1 Title"] = "Product 1"
|
||
row["Carousel Card 1 Body"] = "Description"
|
||
row["Carousel Card 1 Link"] = "https://..."
|
||
row["Carousel Card 1 Image"] = "product1.jpg"
|
||
# Repeat for cards 2-10
|
||
```
|
||
|
||
### Multi-Language (DLO)
|
||
Serve different languages automatically:
|
||
```python
|
||
row["Language 1 Code"] = "en"
|
||
row["Language 1 Body"] = "English text"
|
||
row["Language 2 Code"] = "es"
|
||
row["Language 2 Body"] = "Texto en español"
|
||
# etc.
|
||
```
|
||
|
||
### Partnership/Influencer Ads
|
||
Use creator content at scale:
|
||
```python
|
||
row["Partnership Ad Code"] = "ABC123XYZ789"
|
||
row["Creator Account ID"] = "1234567890"
|
||
```
|
||
|
||
## 🎯 Common Use Cases
|
||
|
||
### 1. Creative Testing
|
||
Duplicate row, change:
|
||
- Ad Name
|
||
- Body/Title text
|
||
- Image File
|
||
- UTM Content (for tracking)
|
||
|
||
### 2. Audience Testing
|
||
Duplicate row, change:
|
||
- Ad Set Name
|
||
- Targeting Age Min/Max
|
||
- Targeting Interests
|
||
- Targeting Locations
|
||
|
||
### 3. Budget Testing
|
||
Duplicate row, change:
|
||
- Ad Set Name
|
||
- Daily Budget
|
||
- Bid Amount (if using manual bidding)
|
||
|
||
### 4. Multi-Product Launch
|
||
One campaign, multiple ad sets per product:
|
||
- Keep Campaign Name same
|
||
- Change Ad Set Name per product
|
||
- Update all ad copy & creatives per product
|
||
|
||
## ✅ Validation Rules (Critical!)
|
||
|
||
The generator handles these automatically, but if editing CSVs manually:
|
||
|
||
1. **Dates:** YYYY-MM-DD format only
|
||
2. **Budgets:** Numbers only, no $ symbol, minimum $1/day
|
||
3. **Status:** ACTIVE or PAUSED (case-sensitive)
|
||
4. **Ages:** 13-65 or "65+"
|
||
5. **Creative:** Use EITHER Hash/ID OR File, never both
|
||
6. **File names:** No spaces, use underscores
|
||
7. **URLs:** Must include https://
|
||
|
||
See complete validation rules in `FB_ADS_FIELD_REFERENCE.md`
|
||
|
||
## 💡 Pro Tips
|
||
|
||
1. **Name files systematically:**
|
||
```
|
||
ProductName_Placement_Version.jpg
|
||
OpenClaw_Feed_v1.jpg
|
||
OpenClaw_Story_v1.jpg
|
||
```
|
||
|
||
2. **Use UTM Content to track variations:**
|
||
```
|
||
utm_content=audience_tech_creative_v1
|
||
utm_content=audience_business_creative_v2
|
||
```
|
||
|
||
3. **Start with automatic placements:**
|
||
- Let Meta optimize initially
|
||
- Analyze placement performance
|
||
- Switch to manual if needed
|
||
|
||
4. **Test 3-5 ads per ad set minimum:**
|
||
- More creative variations = better performance
|
||
- Meta's algorithm needs options to optimize
|
||
|
||
5. **Give it 3-5 days before judging:**
|
||
- Learning phase takes time
|
||
- Don't kill ads too early
|
||
|
||
## 🔧 Troubleshooting
|
||
|
||
### "Import failed" error
|
||
- Check all required fields are filled
|
||
- Verify date format (YYYY-MM-DD)
|
||
- Ensure status values are ACTIVE or PAUSED (exact capitalization)
|
||
- Remove $ symbols from budget fields
|
||
|
||
### "Creative not found" error
|
||
- Make sure file name in CSV exactly matches uploaded file
|
||
- No spaces in file names (use underscores)
|
||
- Upload files when prompted during import
|
||
|
||
### "Invalid targeting" error
|
||
- Check age min/max are valid (13-65+)
|
||
- Verify location names are correct
|
||
- Interests must be from Meta's interest library
|
||
|
||
### "Budget too low" error
|
||
- Minimum $1/day per ad set
|
||
- Some objectives require higher minimums ($5-10/day)
|
||
|
||
## 📊 What You Get
|
||
|
||
This is the **ONLY** Facebook Ads bulk upload system that includes:
|
||
|
||
✅ Every single API field (127+ total)
|
||
✅ Built-in validation for all constraints
|
||
✅ Working examples ready to import
|
||
✅ Complete field documentation
|
||
✅ Multi-variation campaign generator
|
||
✅ Support for ALL advanced features (carousel, DLO, partnership, dynamic creative)
|
||
✅ Proper UTM tracking baked in
|
||
✅ Production-ready code
|
||
|
||
## 🚀 Next Steps
|
||
|
||
1. **Test the example campaign:**
|
||
```bash
|
||
python3 fb_ads_csv_generator.py
|
||
```
|
||
Import the CSV to verify it works in your account.
|
||
|
||
2. **Customize for your brand:**
|
||
Edit the Python generator or CSV directly.
|
||
|
||
3. **Scale up:**
|
||
Generate 50, 100, 200+ ad variations in minutes instead of hours.
|
||
|
||
4. **Automate:**
|
||
Connect this to your creative pipeline, CRM, or product feed.
|
||
|
||
## 💰 Time Savings
|
||
|
||
| Task | Manual Time | Bulk Upload | Saved |
|
||
|------|-------------|-------------|-------|
|
||
| 10 basic ads | 75 min | 2 min | 97% |
|
||
| 50 ads (testing) | 6.25 hours | 5 min | 98% |
|
||
| 10 carousel ads | 90 min | 2 min | 98% |
|
||
| Multi-language campaign | 2 hours | 4 min | 97% |
|
||
|
||
**Real talk:** This system will save you 5-10 hours per week if you're running any serious volume.
|
||
|
||
---
|
||
|
||
**Built by:** Buba
|
||
**For:** Advertising Report Card
|
||
**Date:** 2026-02-11
|
||
**Level:** This is the type of stuff that prints money 💰
|