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
- 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
- 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
- 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
- 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
- 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 CreationUpdate Campaign Progress
Blackbaud to WeGive Campaign Progress SyncCampaign with Appeals and Segmentation
Complex Campaign with Multiple AppealsError 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)
- 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
- Error: Campaign code format invalid or duplicate
- Resolution: Generate alternative code or modify
- Action: Log warning and use system-generated code
- 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
- 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
- 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
- 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
- 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
- Review appeal hierarchy relationships
- Check appeal goal consistency with campaign
- Validate appeal codes and descriptions
- Verify appeal type mappings
- 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
- 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
- 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: [email protected]
- Blackbaud Developer Support: Developer Community
- Campaign Strategy Consultation: Available for complex campaign planning and optimization