@xapp/contact-app
Hosted, stand-alone contact us and scheduling page.
Supported Query Strings
Overrides
When provided, these will override the values from the form widget config.
businessName
businessAddress
businessLogoUrl
businessWebsite
chatWidgetKey
partnerId
Settings
disablePoweredBy - This will disable the "Powered by XAPP AI" text at the bottom of the page.
poweredByMessage - Custom message for the "powered by" footer text (defaults to "Powered by XAPP AI").
poweredByUrl - Custom URL for the "powered by" footer link (defaults to "https://xapp.ai").
Widget Pass-Through
These will be saved to local storage so that the widgets can look for them and respond accordingly.
service - Not in use yet but can pass through which service the user selected
environment - Can be helpful for sandbox testing
origin - Used to configure the form widget specifically for Reserve with Google
enablePreferredTime - Used to turn on preferred time capture for non-scheduling customers.
rwg_token - Set by Google Actions from Google Business Profile for tracking
merchant_id - Optional, we can add this to track merchant ID
Tracking Parameters
Marketing attribution and tracking parameters are automatically captured and passed through to form submissions for analytics filtering. All tracking parameters are persisted to localStorage for 30 days and included in form widget API requests.
Standard UTM Parameters (Google Analytics standard)
utm_source - Traffic source (e.g., "google", "facebook", "newsletter")
utm_medium - Marketing medium (e.g., "cpc", "email", "social")
utm_campaign - Campaign name (e.g., "spring_sale", "product_launch")
utm_term - Paid keywords (for paid search campaigns)
utm_content - Ad content identifier (for A/B testing different ads)
Platform-Specific Click IDs
gclid - Google Click ID (automatically set by Google Ads)
fbclid - Facebook Click ID (automatically set by Facebook)
msclkid - Microsoft Click ID (automatically set by Bing Ads)
Custom Tracking Parameters
track_* - Any parameter prefixed with "track_" will be captured and passed through
Usage Example:
https://your-contact-page.com/widget-key?utm_source=google&utm_medium=cpc&utm_campaign=spring_sale&track_landing_page=homepage
Data Flow:
- Parameters are extracted from the URL when the page loads
- Stored in localStorage with 30-day expiration
- Automatically included in all form widget API requests
- Available for filtering in OpenSearch analytics
Configuration:
Tracking parameter capture is enabled by default. The system follows industry standards and handles parameter persistence automatically.
Note: The contact-app and embedded form-widget both extract tracking parameters independently. This is safe:
- Both read from the same page URL
- Both write to the same localStorage keys (
xa_tracking_*)
- The form-widget's extraction is idempotent and just refreshes the data
- All parameters are correctly passed to the API regardless of which component extracted them