Images
Working with Images
Images bring your emails to life and significantly improve engagement rates. Contacted makes it incredibly simple to include content images in your transactional emails—just pass image URLs in your data and reference them in your prompts.
Note: Your company branding (logos, footers, headers) is already configured in your account settings and applied automatically. This guide focuses on content-specific images like product photos, charts, and promotional banners.
How Images Work
1. Pass content image URLs in your data
object
2. Reference the image keys in your prompt
with specific placement instructions
3. Our AI handles sizing, positioning, and responsive design automatically
4. Your pre-configured branding wraps around the content seamlessly
Important: All image values must be provided as URL strings. Our AI automatically optimizes images for email clients.
Basic Image Usage
Simple Example
contacted.send(
subject="Welcome to Our Platform!",
prompt="Welcome email with welcome_banner as a hero image showcasing our platform",
data={
"user_name": "Sarah Johnson",
"welcome_banner": "https://yoursite.com/images/welcome-hero.jpg"
}
)
What Happens:
Your branded header/logo appears automatically (from account settings)
welcome_banner
becomes a prominent hero image in the email bodyYour branded footer appears automatically
AI handles responsive sizing and email client compatibility
Content Image Types & Use Cases
1. Hero/Banner Images
Use for: Main visual content, announcements, featured content
data={
"hero_image": "https://yoursite.com/sale-banner.jpg",
"announcement_banner": "https://yoursite.com/new-feature.png"
}
prompt="Product announcement with hero_image as the main banner showcasing the new feature"
2. Product Images
Use for: Product showcases, order confirmations, catalogs
data={
"product_image": "https://store.com/products/premium-headphones.jpg",
"product_gallery": "https://store.com/gallery/headphones-lifestyle.jpg"
}
prompt="Order confirmation showing product_image prominently with order details below"
3. Data Visualization Images
Use for: Charts, graphs, reports, analytics
data={
"monthly_chart": "https://analytics.com/charts/may-2025.png",
"performance_graph": "https://reports.com/graphs/q2-performance.jpg"
}
prompt="Monthly report email with monthly_chart showing growth metrics and performance_graph in the detailed analysis section"
4. Content & Marketing Images
Use for: Event promotions, marketing campaigns, feature highlights
data={
"event_banner": "https://events.com/devcon-2025-banner.jpg",
"feature_screenshot": "https://app.com/screenshots/new-dashboard.png",
"promotional_image": "https://marketing.com/summer-sale-2025.jpg"
}
prompt="Event invitation with event_banner as header and feature_screenshot showing the new capabilities"
5. Personal & Team Images
Use for: User-specific content, team introductions, personal touches
data={
"user_avatar": "https://profiles.com/users/sarah-j.jpg",
"team_photo": "https://company.com/team/support-team.jpg"
}
prompt="Support ticket response with user_avatar next to greeting and team_photo introducing our support team"
Advanced Content Image Placement
Multiple Content Images with Specific Instructions
contacted.send(
subject="Your Q2 Business Report",
prompt="""
Quarterly business report email structure:
1. Place report_cover as a large hero image after the greeting
2. Insert revenue_chart in the financial metrics section
3. Add team_photo in the "Meet Your Account Team" section
4. Include comparison_infographic showing market position
Make the report_cover and revenue_chart prominent and readable.
Keep team_photo smaller and professional.
""",
data={
"customer_name": "Acme Corporation",
"quarter": "Q2 2025",
"report_cover": "https://reports.com/q2-2025-cover.jpg",
"revenue_chart": "https://analytics.com/charts/q2-revenue.png",
"team_photo": "https://team.com/account-managers.jpg",
"comparison_infographic": "https://charts.com/market-position.png",
"revenue_growth": "23%",
"key_wins": "Expanded to 3 new markets, launched premium tier"
}
)
Product Showcase with Multiple Images
contacted.send(
subject="Your Order Ships Tomorrow!",
prompt="""
Shipping notification with product showcase:
- Place main_product as the hero showcasing the primary item
- Create a gallery section with accessory_1, accessory_2 showing included accessories
- Add unboxing_preview showing what the package will look like
- Include care_instructions as a helpful infographic
""",
data={
"customer_name": "Jordan Kim",
"order_number": "ORD-7892",
"main_product": "https://products.com/gaming-laptop-hero.jpg",
"accessory_1": "https://products.com/wireless-mouse.jpg",
"accessory_2": "https://products.com/laptop-stand.jpg",
"unboxing_preview": "https://packaging.com/premium-unboxing.jpg",
"care_instructions": "https://guides.com/laptop-care-infographic.png",
"tracking_number": "TK123456789",
"estimated_delivery": "June 18, 2025"
}
)
Overriding Branding (Advanced)
While your branding is applied automatically, you can override specific elements when needed:
Custom Header for Special Campaigns
contacted.send(
subject="Black Friday Mega Sale!",
prompt="""
Special Black Friday email. Override the standard header with sale_header
showing our Black Friday branding. Use deal_banner as main hero image.
Include countdown_timer showing time remaining.
""",
data={
"sale_header": "https://campaigns.com/black-friday-header.png",
"deal_banner": "https://campaigns.com/mega-sale-hero.jpg",
"countdown_timer": "https://timers.com/black-friday-countdown.gif",
"sale_percentage": "70%",
"sale_end_date": "November 29, 2025"
}
)
Event-Specific Branding
contacted.send(
subject="DevCon 2025 Registration Confirmed",
prompt="""
Conference confirmation email. Use event_header instead of standard
company header to show conference branding. Include confirmation_banner
and venue_photo for event atmosphere.
""",
data={
"event_header": "https://devcon.com/email-headers/devcon-2025.png",
"confirmation_banner": "https://devcon.com/confirmations/registered.jpg",
"venue_photo": "https://venues.com/sf-convention-center-interior.jpg",
"attendee_name": "Alex Rivera",
"ticket_type": "Full Conference Pass"
}
)
Best Practices
✅ Content Image Requirements
Supported Formats: JPG, PNG, GIF, WebP Recommended Size: 600-1200px wide for hero images, 300-600px for secondary content Max File Size: 5MB per image Hosting: Use reliable CDNs or image hosting services
# ✅ Good Content URLs
"hero_banner": "https://cdn.yoursite.com/banners/welcome.jpg"
"product_shot": "https://cdn.shopify.com/products/item-123.jpg"
"chart_image": "https://analytics.yourapp.com/charts/monthly.png"
# ❌ Avoid
"bad_image": "http://localhost:3000/image.png" # Not accessible
"broken_link": "https://site.com/missing.jpg" # Broken links
"too_large": "https://site.com/huge-20mb.png" # Too large
🎯 Prompt Best Practices
Be Specific About Content Placement:
# ✅ Specific placement for content
prompt="Welcome email with hero_banner as main showcase image and product_grid showing our popular items"
# ❌ Vague placement
prompt="Welcome email with some images"
Describe Content Purpose:
# ✅ Purpose-driven
prompt="Newsletter with feature_screenshot showing the new dashboard and tutorial_gif demonstrating key features"
# ❌ No context
prompt="Newsletter with screenshot and gif"
Focus on Content Layout:
# ✅ Content-focused layout
prompt="Invoice with product_images in itemized section and shipping_infographic showing delivery timeline"
# ❌ No layout guidance
prompt="Invoice with product images and shipping info"
Common Content Use Cases
E-commerce Product Showcase
contacted.send(
subject="New Arrivals Just For You!",
prompt="""
Product showcase email:
- Use collection_hero as main banner showcasing new arrivals
- Display featured_product_1, featured_product_2, featured_product_3 in a grid
- Include styling_tips as a lifestyle infographic
""",
data={
"customer_name": "Maya Patel",
"collection_name": "Summer Essentials",
"collection_hero": "https://store.com/collections/summer-hero.jpg",
"featured_product_1": "https://products.com/summer-dress-blue.jpg",
"featured_product_2": "https://products.com/sandals-tan.jpg",
"featured_product_3": "https://products.com/sun-hat-white.jpg",
"styling_tips": "https://guides.com/summer-styling-tips.png",
"sale_percentage": "25%",
"shop_url": "https://store.com/collections/summer"
}
)
SaaS Feature Announcement
contacted.send(
subject="New Feature: Advanced Analytics Dashboard",
prompt="""
Feature announcement email:
- Place feature_hero as main announcement banner
- Insert dashboard_screenshot showing the new interface
- Add before_after showing the improvement
- Include tutorial_preview for getting started
""",
data={
"user_name": "Chris Wong",
"feature_name": "Advanced Analytics Dashboard",
"feature_hero": "https://announcements.com/analytics-hero.jpg",
"dashboard_screenshot": "https://screenshots.com/new-dashboard.png",
"before_after": "https://comparisons.com/old-vs-new-analytics.jpg",
"tutorial_preview": "https://tutorials.com/analytics-preview.gif",
"beta_access_link": "https://app.com/beta/analytics"
}
)
Troubleshooting Content Images
Common Issues
Issue: Content images not displaying
Solution: Verify URLs are publicly accessible and use HTTPS
Test: Open image URL directly in browser
Issue: Content images too large/small in email body
Solution: Be more specific about sizing in prompts
Example: "large hero_banner" vs "small thumbnail_image"
Issue: Content images in wrong position
Solution: Provide clearer content layout instructions
Example: "main_product prominently at top" vs "main_product in the content area"
Issue: Content images clashing with brand elements
Solution: Ensure content images complement your brand colors
Tip: Preview in playground to see final result with branding
Advanced Content Techniques
Dynamic Content Generation
Use dynamic URLs for personalized content:
data={
"user_chart": f"https://charts.yourapp.com/user/{user_id}/monthly.png",
"personal_report": f"https://reports.yourapp.com/user/{user_id}/summary.jpg",
"custom_product": f"https://products.yourapp.com/recommended/{user_id}.jpg"
}
A/B Testing Content Images
Test different content approaches:
# Version A - Product focus
hero_image = "https://site.com/product-hero-a.jpg"
# Version B - Lifestyle focus
hero_image = "https://site.com/lifestyle-hero-b.jpg"
contacted.send(
prompt=f"Welcome email with hero_image showcasing our premium experience",
data={"hero_image": hero_image}
)
Seasonal Content Swapping
Automatically use seasonal content:
import datetime
season = "summer" if datetime.now().month in [6,7,8] else "winter"
seasonal_content = f"https://content.com/{season}-promotion.jpg"
data={
"seasonal_banner": seasonal_content,
"seasonal_products": f"https://products.com/{season}-collection.jpg"
}
Summary
Content images in Contacted emails are powerful but simple:
Your branding is handled automatically from account settings
Pass content image URLs as strings in your
data
objectReference image keys in your
prompt
with specific instructionsFocus on content placement and purpose, not branding elements
Use reliable, fast-loading image hosting for content
Override branding only when needed for special campaigns
Our AI handles all the technical complexity—responsive design, email client compatibility, and optimal sizing—while seamlessly integrating your content with your pre-configured brand identity.
Ready to create visually stunning emails? Start with simple hero banners and work your way up to complex content showcases!
Last updated