Knowledge base Drupal Automation and webhooks
Dynamics 365 CRM Lead Capture
Auto-create CRM leads on form submit with UTM tracking, custom entity forms surfaced in Drupal for seamless lead management.
Published 20 February 2024
Overview
Dynamics 365 CRM integration transforms your Drupal site into a powerful lead generation machine. This solution automatically captures leads from web forms, preserves marketing attribution through UTM parameters, and provides seamless access to CRM data within the Drupal interface.
Features
- Automatic lead creation from form submissions
- UTM parameter tracking and attribution
- Custom CRM entity forms in Drupal
- Bi-directional data synchronization
- Lead scoring and qualification
- Campaign tracking integration
- Duplicate detection and merging
- Real-time CRM data access
Technical Details
Technologies: Dynamics 365 Web API, Microsoft Dataverse, Drupal Webform module, Drupal Form API, OAuth 2.0, JavaScript SDK
Requirements:
- Drupal 9.x or 10.x with Webform module
- Dynamics 365 Sales or Customer Service
- Azure AD app registration
- Dynamics 365 API permissions
- SSL certificate for production
API Endpoints:
Create lead: POST /api/data/v9.2/leads
Update lead: PATCH /api/data/v9.2/leads({lead-id})
Query leads: GET /api/data/v9.2/leads?$filter=...
Associate entities: POST /api/data/v9.2/leads({lead-id})/leadtoopportunity_association/$ref
Implementation
- Configure Azure AD app with Dynamics 365 permissions
- Create custom Drupal module for CRM integration
- Implement Dynamics 365 Web API client
- Create Webform handler for lead capture
- Implement UTM parameter tracking
- Build field mapping configuration UI
- Add lead qualification workflows
- Implement duplicate detection logic
- Create custom entity form widgets
- Add comprehensive error handling and logging
<?php
// Example: Webform handler for Dynamics 365 lead capture
namespace Drupal\dynamics_integration\Plugin\WebformHandler;
use Drupal\webform\Plugin\WebformHandlerBase;
use Drupal\webform\WebformSubmissionInterface;
/**
* @WebformHandler(
* id = "dynamics_lead_capture",
* label = @Translation("Dynamics 365 Lead Capture"),
* category = @Translation("CRM"),
* description = @Translation("Captures form submissions as Dynamics 365 leads"),
* cardinality = \Drupal\webform\Plugin\WebformHandlerInterface::CARDINALITY_SINGLE,
* results = \Drupal\webform\Plugin\WebformHandlerInterface::RESULTS_PROCESSED,
* )
*/
class DynamicsLeadCaptureHandler extends WebformHandlerBase {
public function submitForm(array &$form, FormStateInterface $form_state, WebformSubmissionInterface $webform_submission) {
$values = $webform_submission->getData();
$dynamics_client = \Drupal::service('dynamics_integration.client');
// Extract UTM parameters from session
$session = \Drupal::request()->getSession();
$utm_params = $session->get('utm_tracking', []);
// Build lead data
$lead_data = [
'firstname' => $values['first_name'],
'lastname' => $values['last_name'],
'emailaddress1' => $values['email'],
'telephone1' => $values['phone'] ?? '',
'companyname' => $values['company'] ?? '',
'description' => $values['message'] ?? '',
// UTM tracking fields
'cr96c_utm_source' => $utm_params['utm_source'] ?? '',
'cr96c_utm_medium' => $utm_params['utm_medium'] ?? '',
'cr96c_utm_campaign' => $utm_params['utm_campaign'] ?? '',
'cr96c_utm_content' => $utm_params['utm_content'] ?? '',
// Lead source
'leadsourcecode' => 3, // Web
'websiteurl' => \Drupal::request()->getSchemeAndHttpHost(),
];
try {
// Create lead in Dynamics 365
$lead = $dynamics_client->createLead($lead_data);
// Store CRM ID for reference
$webform_submission->setElementData('crm_lead_id', $lead['leadid']);
$webform_submission->save();
\Drupal::logger('dynamics_integration')->info(
'Created Dynamics 365 lead: @id',
['@id' => $lead['leadid']]
);
} catch (\Exception $e) {
\Drupal::logger('dynamics_integration')->error(
'Failed to create Dynamics 365 lead: @message',
['@message' => $e->getMessage()]
);
// Continue processing - don't fail form submission
}
}
}
Use Cases
- B2B lead generation campaigns
- Contact form lead qualification
- Event registration and follow-up
- Newsletter signup lead nurturing
- Multi-touch attribution tracking
Benefits
- Automated lead capture eliminates manual entry
- Complete marketing attribution data
- Real-time CRM data synchronization
- Improved lead response times
- Better campaign ROI measurement
- Reduced data entry errors
- Seamless marketing and sales alignment
Read next
-
Drupal · Automation and webhooks
Microsoft Planner Task Automation
Create Planner tasks from Drupal events with two-way sync, custom dashboards using Drupal Views and Charts for project tracking.
-
Drupal · Automation and webhooks
Microsoft To-Do Task Automation
Automate task creation using Drupal Rules or event subscribers with two-way sync for task status updates reflected in Drupal.
-
Drupal · Automation and webhooks
Teams Chat Bot & Notifications Module
Create outbound triggers from Drupal events, inbound slash commands via webhook, and adaptive card templates for rich, branded messages in Microsoft Teams.