Campaign Mapping
Campaign Data Mapping
This document details the field-level mappings between WeGive campaign records and Blackbaud Raiser’s Edge NXT campaign records.
Object Overview
WeGive Campaign Object
- Purpose: Represents fundraising campaigns and appeals in the WeGive platform
- API Endpoint:
/campaigns/{campaign} - Unique Identifier: WeGive campaign ID
- Marketing: Controls donation attribution and campaign tracking
Blackbaud Campaign Object
- Purpose: Represents fundraising campaigns and appeals in Raiser’s Edge NXT
- API Endpoint:
fundraising/v1/campaigns/{campaign_id} - Unique Identifier: Blackbaud campaign ID
- Fundraising Management: Controls campaign goals, appeals, and attribution
Core Campaign Mapping
Basic Campaign Information
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
id | Correlation ID storage | String | Both | No | Stored in custom field or external reference |
name | description | String | Both | Yes | Campaign display name |
code | lookup_id | String | Both | No | Short campaign identifier |
type | category | String | Both | No | Campaign type classification |
status | status | String | Both | No | Active, Inactive, Planned, Completed |
goal | goal.value | Decimal | Both | No | Fundraising goal amount |
description | notes | Text | Both | No | Detailed campaign description |
Campaign Lifecycle
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
start_date | start_date | Date | Both | No | Campaign launch date |
end_date | end_date | Date | Both | No | Campaign completion date |
created_at | date_added | DateTime | Both | No | Campaign creation timestamp |
updated_at | date_modified | DateTime | Both | No | Last modification timestamp |
active | status = “Active” | Boolean | Both | No | Campaign accepting donations |
Financial Information
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
target_amount | goal.value | Decimal | Both | No | Fundraising target |
raised_amount | Calculated field | Decimal | Pull Only | No | Total raised to date |
participant_goal | participant_goal | Decimal | Both | No | Individual participant goal |
minimum_gift | minimum_gift | Decimal | Both | No | Minimum gift amount |
Campaign Type Mapping
Standard Campaign Types
| WeGive Type | Blackbaud Category | Description |
|---|---|---|
annual | Annual Fund | Annual giving campaigns |
capital | Capital Campaign | Building and capital projects |
major_gifts | Major Gifts | High-dollar donor cultivation |
planned_giving | Planned Giving | Estate and legacy gifts |
special_event | Special Event | Fundraising events and galas |
emergency | Emergency | Crisis response and disaster relief |
endowment | Endowment | Endowment building campaigns |
membership | Membership | Membership drives and renewals |
Campaign Status Values
| WeGive Status | Blackbaud Status | Description |
|---|---|---|
active | Active | Currently running campaign |
planned | Planned | Future campaign in planning |
completed | Completed | Successfully completed campaign |
cancelled | Cancelled | Cancelled before completion |
suspended | Suspended | Temporarily paused campaign |
archived | Inactive | Historical campaign data |
Appeal Integration
Appeal Hierarchy
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
appeals | appeals | Array | Both | No | Associated appeals within campaign |
default_appeal | default_appeal_id | String | Both | No | Primary appeal for campaign |
appeal_count | Calculated | Integer | Both | No | Number of appeals in campaign |
Appeal Information
| WeGive Appeal Field | Blackbaud Appeal Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
appeal_id | id | String | Both | Yes | Appeal unique identifier |
appeal_name | description | String | Both | Yes | Appeal display name |
appeal_code | lookup_id | String | Both | No | Short appeal identifier |
appeal_type | type | String | Both | No | Direct mail, email, phone, etc. |
appeal_goal | goal.value | Decimal | Both | No | Appeal-specific goal |
Marketing and Attribution
Source Tracking
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
source_code | source_code | String | Both | No | Marketing source identifier |
utm_campaign | campaign_code | String | Both | No | UTM campaign parameter |
utm_source | source_detail | String | Both | No | UTM source parameter |
utm_medium | medium | String | Both | No | UTM medium parameter |
package_code | package_id | String | Both | No | Direct mail package code |
Channel Attribution
| WeGive Channel | Blackbaud Channel | Description |
|---|---|---|
email | Email | Email marketing campaigns |
direct_mail | Direct Mail | Print mail campaigns |
phone | Phone | Telephone fundraising |
online | Online | Website and digital campaigns |
social | Social Media | Social media campaigns |
event | Special Event | Event-based fundraising |
peer_to_peer | Peer-to-Peer | Grassroots fundraising |
Segmentation and Targeting
Donor Segmentation
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
target_segments | constituent_query_id | Array | Both | No | Target donor segments |
exclusion_segments | exclusion_query_id | Array | Both | No | Excluded donor segments |
geographic_targeting | geographic_filter | Object | Both | No | Geographic targeting rules |
demographic_targeting | demographic_filter | Object | Both | No | Demographic targeting rules |
Communication Preferences
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
email_frequency | email_frequency | String | Both | No | Email communication frequency |
mail_frequency | mail_frequency | String | Both | No | Direct mail frequency |
phone_frequency | phone_frequency | String | Both | No | Phone call frequency |
suppress_appeals | suppress_appeals | Boolean | Both | No | Suppress appeal communications |
Performance Tracking
Campaign Metrics
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
total_donors | Calculated | Integer | Pull Only | No | Total unique donors |
total_gifts | Calculated | Integer | Pull Only | No | Total number of gifts |
average_gift | Calculated | Decimal | Pull Only | No | Average gift amount |
response_rate | Calculated | Decimal | Pull Only | No | Response rate percentage |
cost_per_dollar | cost_ratio | Decimal | Both | No | Fundraising cost ratio |
Conversion Tracking
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
solicitations_sent | solicitations | Integer | Both | No | Total solicitations sent |
responses_received | responses | Integer | Both | No | Total responses received |
conversions | gifts_received | Integer | Both | No | Actual gifts received |
conversion_rate | Calculated | Decimal | Both | No | Conversion percentage |
Budget and Financial Planning
Campaign Budget
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
budget_total | expense_budget | Decimal | Both | No | Total campaign budget |
budget_allocated | expenses_allocated | Decimal | Both | No | Budget already allocated |
budget_spent | expenses_actual | Decimal | Both | No | Actual expenses to date |
budget_remaining | Calculated | Decimal | Both | No | Remaining budget |
Cost Categories
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
printing_costs | printing_expense | Decimal | Both | No | Printing and materials |
mailing_costs | postage_expense | Decimal | Both | No | Postage and shipping |
staff_costs | staff_expense | Decimal | Both | No | Staff time allocation |
vendor_costs | vendor_expense | Decimal | Both | No | External vendor costs |
Custom Fields and Attributes
Extended Campaign Information
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
custom_fields | attributes | Object | Both | No | Organization-specific fields |
tags | campaign_codes | Array | Both | No | Campaign categorization tags |
keywords | search_keywords | Array | Both | No | Search and filtering keywords |
priority_level | priority | String | Both | No | Campaign priority ranking |
Stewardship and Recognition
| WeGive Field | Blackbaud Field | Data Type | Direction | Required | Notes |
|---|---|---|---|---|---|
thank_you_template | acknowledgment_template | String | Both | No | Thank you message template |
receipt_template | receipt_template | String | Both | No | Tax receipt template |
recognition_levels | recognition_tiers | Array | Both | No | Donor recognition levels |
stewardship_plan | stewardship_schedule | Object | Both | No | Ongoing stewardship activities |
Data Transformation Rules
Name and Description Handling
Campaign Names
- Preserve original formatting and capitalization
- Maximum length: 255 characters
- Special characters allowed and preserved
- Duplicate name detection within same year
Campaign Descriptions
- HTML markup removed for compatibility
- Maximum length: 4000 characters
- Line breaks preserved where possible
- Rich text formatting converted to plain text
Date and Time Processing
Campaign Timeline
- Start dates can be in the future for planned campaigns
- End dates must be after start dates
- Timezone conversion for international campaigns
- Automatic status updates based on dates
Duration Calculations
- Campaign length calculated automatically
- Progress tracking updated daily
- Milestone date tracking
- Extension handling for ongoing campaigns
Financial Data Processing
Goal and Target Amounts
- Goals rounded to nearest dollar
- Percentage completion calculated automatically
- Progress tracking updated with each gift
- Historical goal changes maintained
Budget Calculations
- Cost-per-dollar-raised calculated automatically
- ROI calculations updated in real-time
- Variance analysis between budget and actual
- Efficiency metrics tracked over time
Sync Behavior
Create Operations
New WeGive Campaign → Blackbaud Campaign
- Validate campaign data and requirements
- Check for duplicate campaign names or codes
- Create campaign record in Blackbaud
- Set initial status and configuration
- Store correlation ID for future updates
- Create default appeal if specified
New Blackbaud Campaign → WeGive Campaign
- Extract campaign information and attributes
- Map to WeGive campaign format
- Preserve campaign classification and status
- Create WeGive campaign record
- Store correlation ID and external references
Update Operations
Bidirectional Updates
- Campaign name and description changes
- Status updates (active/inactive/completed)
- Goal and target modifications
- Date range adjustments
- Budget and expense updates
- Performance metric updates
Restricted Updates
- Campaign codes typically immutable after creation
- Start dates may be restricted once campaign begins
- Historical data preservation for completed campaigns
- Approval required for major goal changes
Completion and Archive Operations
Campaign Completion Process
- Status change to “Completed”
- Final performance metrics calculation
- Success/failure assessment against goals
- Archive campaign data for historical reporting
- Transfer learnings to campaign template library
API Examples
Create Campaign Record
WeGive to Blackbaud Campaign Creation
POST /fundraising/v1/campaigns{ "description": "Annual Giving Campaign 2024", "lookup_id": "ANN2024", "category": "Annual Fund", "status": "Active", "goal": { "value": 250000.00, "currency": "USD" }, "start_date": "2024-01-01", "end_date": "2024-12-31", "notes": "Supporting general operating expenses and program expansion", "source_code": "AN24", "appeals": [ { "description": "Spring Appeal 2024", "lookup_id": "SP24", "type": "Direct Mail", "goal": {"value": 75000.00, "currency": "USD"} }, { "description": "Fall Appeal 2024", "lookup_id": "FA24", "type": "Email", "goal": {"value": 50000.00, "currency": "USD"} } ]}Update Campaign Progress
Blackbaud to WeGive Campaign Progress Sync
PUT /campaigns/{campaign_id}{ "name": "Annual Giving Campaign 2024", "status": "active", "goal": 250000.00, "raised_amount": 87500.00, "progress_percentage": 35.0, "total_donors": 145, "total_gifts": 178, "average_gift": 491.57, "response_rate": 12.3, "updated_at": "2024-03-15T10:30:00Z", "blackbaud_campaign_id": "12345678-1234-1234-1234-123456789abc"}Campaign with Appeals and Segmentation
Complex Campaign with Multiple Appeals
{ "description": "Capital Campaign - New Arts Center", "lookup_id": "ARTS2024", "category": "Capital Campaign", "status": "Active", "goal": {"value": 2000000.00, "currency": "USD"}, "start_date": "2024-01-01", "end_date": "2026-12-31", "appeals": [ { "description": "Leadership Gifts Phase", "lookup_id": "ARTSLEAD", "type": "Major Gifts", "goal": {"value": 1000000.00, "currency": "USD"}, "minimum_gift": 25000.00 }, { "description": "Public Phase", "lookup_id": "ARTSPUB", "type": "Direct Mail", "goal": {"value": 750000.00, "currency": "USD"}, "minimum_gift": 100.00 }, { "description": "Online Campaign", "lookup_id": "ARTSWEB", "type": "Online", "goal": {"value": 250000.00, "currency": "USD"} } ], "attributes": [ { "attribute_category": "Project Type", "string_value": "Building Construction" }, { "attribute_category": "Architect", "string_value": "Johnson Architecture Firm" } ]}Error Handling and Validation
Required Field Validation
Critical Fields
- Campaign name/description must not be empty
- Campaign code must be unique within organization
- Status must be valid enumerated value
- Goal amount must be positive if specified
- Date ranges must be logical (start before end)
Data Quality Checks
- Name length validation (max 255 characters)
- Code format validation (alphanumeric plus hyphens)
- Amount precision validation (2 decimal places)
- Date format validation (ISO 8601)
- Appeal consistency within campaign
Common Error Scenarios
Duplicate Campaign Names
- Error: Campaign name already exists for same period
- Resolution: Append year or modify name
- Action: Queue for administrative review
Invalid Campaign Codes
- Error: Campaign code format invalid or duplicate
- Resolution: Generate alternative code or modify
- Action: Log warning and use system-generated code
Date Range Validation
- Error: End date before start date
- Resolution: Adjust dates or use open-ended range
- Action: Log error and notify administrators
Retry and Recovery Logic
Temporary Failures
- Network timeouts: Retry with exponential backoff
- Rate limiting: Respect retry-after headers
- Server errors: Retry up to 3 times with delays
Permanent Failures
- Validation errors: Log and skip record
- Authorization errors: Alert system administrators
- Data conflicts: Queue for manual resolution
Performance Optimization
Batch Processing
Campaign Creation Batches
- Process up to 25 campaigns per API call
- Include appeals in campaign creation
- Validate all campaign data before batch submission
- Handle partial batch failures gracefully
Update Optimization
- Delta sync for changed records only
- Timestamp-based change detection
- Bulk update operations where supported
- Performance metric updates in batches
Caching Strategies
Reference Data Caching
- Campaign information cached for 15 minutes
- Appeal data cached for 10 minutes
- Status and type lookups cached for 1 hour
- Performance metrics cached for 5 minutes
Performance Monitoring
- Average campaign sync time tracking
- API response time monitoring
- Error rate alerting by campaign type
- Cache effectiveness measurement
Reporting and Analytics
Campaign Performance Analytics
Success Metrics
- Goal achievement rates by campaign type
- Average time to reach funding goals
- Donor acquisition and retention rates
- Cost-per-dollar-raised analysis
- ROI calculations and comparisons
Trend Analysis
- Campaign performance over time
- Seasonal giving patterns
- Appeal effectiveness comparison
- Channel performance analysis
- Segmentation effectiveness
Comparative Reporting
Cross-Campaign Analysis
- Performance benchmarking
- Best practice identification
- Resource allocation optimization
- Strategic planning insights
- Future campaign planning
Best Practices
Campaign Planning
- Clear Goals: Set specific, measurable, achievable goals
- Realistic Timelines: Allow adequate time for campaign execution
- Defined Appeals: Create distinct appeals with clear messaging
- Target Segmentation: Use appropriate donor segmentation
- Performance Tracking: Monitor progress regularly
Data Management
- Consistent Naming: Use standardized campaign naming conventions
- Code Standards: Implement consistent code formats
- Regular Updates: Keep campaign data current and accurate
- Historical Preservation: Maintain historical campaign data
- Quality Assurance: Regular data quality audits
Integration Management
- Sync Frequency: Appropriate sync timing for campaign needs
- Error Monitoring: Proactive error detection and resolution
- Performance Tracking: Monitor sync performance and optimization
- Backup Procedures: Regular campaign data backups
- Testing Protocols: Thorough testing before campaign launch
Troubleshooting Guide
Common Sync Issues
Campaign Creation Failures
- Verify campaign name uniqueness
- Check campaign code format and availability
- Validate goal amounts and date ranges
- Confirm user permissions for campaign creation
Appeal Sync Problems
- Review appeal hierarchy relationships
- Check appeal goal consistency with campaign
- Validate appeal codes and descriptions
- Verify appeal type mappings
Performance Data Discrepancies
- Compare calculation methods between systems
- Check date range filters for performance metrics
- Verify gift allocation to correct campaigns
- Review segmentation and targeting criteria
Data Quality Issues
Missing Campaign Information
- Check field mapping completeness
- Verify data availability in source system
- Review sync scope and filtering rules
- Validate required field population
Inconsistent Classifications
- Review campaign type and category mappings
- Check for custom field configuration differences
- Validate enumerated value consistency
- Confirm appeal relationship accuracy
Performance Problems
Slow Campaign Processing
- Optimize batch sizes for campaign volume
- Review API response times and bottlenecks
- Check network connectivity and latency
- Monitor system resource utilization
High Error Rates
- Analyze error patterns and common causes
- Review data validation rule effectiveness
- Check system capacity and rate limits
- Validate integration configuration settings
Support Resources
Documentation References
- Blackbaud Campaign API Documentation
- WeGive Campaign API Documentation
- Fund Mapping Documentation
- Gift Mapping Documentation
Support Contacts
- WeGive Support: support@wegive.com
- Blackbaud Developer Support: Developer Community
- Campaign Strategy Consultation: Available for complex campaign planning and optimization