HubSpot
The HubSpot integration allows Karla to provide your HubSpot account with triggers of any sort, like shipment notifications or claims.
Steps
1. Open HubSpot & navigate to Settings
Navigate to your HubSpot instance and click on the Settings
gear icon in the main navigation bar.
2. Create a Private App
In the left sidebar, navigate to Integrations
→ Legacy Apps
.
Click on Create
Click on Private
Fill the Basic Info
Add the required scopes
- Contact Management: read contact profiles to match customers
- Event Tracking: send custom events to your HubSpot account
These permissions are mandatory to have the minimum notification functionality working:
crm.objects.contacts.read
: will read contact emails to match delivery eventsbehavioral_events.event_definitions.read_write
: will createkarla_*
custom events
The exact naming and location of scopes may vary slightly based on your HubSpot version. Look for scopes related to:
- Reading contacts/CRM data
- Sending behavioral or custom events
Skip the Webhooks
section and click on Create app
at the top.
Once you click on Continue creating
, go to the Auth
tab, Show Token
and Copy
the Access Token.
3. Set up the Private App Access Token in Karla
After selecting the scopes, click on Create app
and confirm. HubSpot will generate a Private App Access Token.
Copy the access token from the generated credentials.
In our portal, navigate to Settings
> Integrations
, and select HubSpot
.
Paste the Private App Access Token
and click on Save
.
Once the key has been saved successfully, you can toggle the integration settings.
- Treat this token like a password
- Only share it through secure channels
- You can regenerate the token anytime if needed
Building HubSpot Workflows
Our HubSpot integration will automatically create custom events prefixed with karla_
for all delivery journey events.
From there, you can create automation workflows relying on these events to configure your own email flows.
Workflow Priority Recommendations
To cover the most important delivery journey events, we recommend first creating workflows for the following event groups:
karla_shipment_in_transit
karla_shipment_carrier_delay
karla_shipment_damaged
karla_shipment_out_for_delivery
karla_shipment_delivered_all_events
karla_shipment_not_picked_up_returned
karla_shipment_failed_returned
By creating these 7 workflows you will be able to cover standard events happening for every order (karla_shipment_in_transit
, karla_shipment_out_for_delivery
), all delivered cases (karla_shipment_delivered_all_events
) and the events that hopefully do not happen too often, but where it is most important to be proactive with your customers (karla_shipment_carrier_delay
, karla_shipment_damaged
, karla_shipment_not_picked_up_returned
, karla_shipment_failed_returned
).
HubSpot uses namespaced event groups (like karla_shipment_delivered
) while webhooks use ref patterns (like shipments/delivered/SUCCESSFULLY_DELIVERED
). Event groups are business-friendly names that group multiple specific events for easier automation management.
For complete documentation, see: Events Reference →
Pickup Reminder Workflow
Create an automated workflow that triggers pickup reminders for packages delivered to parcel shops or lockers that haven't been collected within a specified timeframe.
Inserting the tracking page link
To include the tracking page link in your HubSpot transactional emails you should use personalization tokens with order_number
and zip_code
properties, so that your customers always receive their personalized link:
For emails triggered through HubSpot:
Karla events
https://app.gokarla.io/track/slug?orderNumber={{ contact.order_number }}&zipCode={{ contact.zip_code }}&ref=karla
https://yourshop.com/pages/tracking?orderNumber={{ contact.order_number }}&zipCode={{ contact.zip_code }}&ref=karla
Shipping Confirmation
Triggered by external events from your shop system.
https://app.gokarla.io/track/slug?orderNumber={{ contact.order_number }}&zipCode={{ contact.shipping_zip }}&ref=karla
https://yourshop.com/pages/tracking?orderNumber={{ contact.order_number }}&zipCode={{ contact.zip_code }}&ref=karla
A slug
is your unique identifier that represents your shop within the Karla system. This is used to properly route tracking information and ensure that shipment data is associated with the correct merchant account.
Testing the workflows
Once you've set up the workflows and the respective emails it is important you make sure that the integration is working as expected.
In the Email Template Editor go to Preview & Test functionality.
There make sure that in the contact data you see the information from the profiles from your shop and not from Karla's test events. These should be infos like customer name, order number, shipping address etc.
You will see this information only after you have integrated your shop and HubSpot with Karla. More on shop integrations
If you want to see how your customers will receive the emails, you can send a test email to your email address.
Putting the workflows live
After you have tested your workflows, you can put them live upon the agreed go-live date.
Make sure you have configured the proper sending settings and have disabled any frequency caps for transactional emails, so that all of your customers receive their shipping updates.
Event Groups
Karla provides the following event groups to your HubSpot instance for building workflows. These are business-friendly groupings that make it easier to create targeted campaigns without dealing with individual event names.
Event groups are specifically designed for HubSpot integration and are different from webhook ref patterns:
- Event Groups: Business-friendly names, prefixed by
karla_
(e.g.,karla_shipment_delivered
) - Webhook Refs: Technical identifiers (e.g.,
shipments/delivered/SUCCESSFULLY_DELIVERED
)
For complete documentation of all events, ref patterns, and event groups, see: Events Reference →
Claims
For any processed claim (e.g. damaged package, package not found...). See Claims.
karla_claim_created
karla_claim_updated
Shipments
For any processed shipment update:
Event Group | Description | Use Case |
---|---|---|
karla_shipment_pre_transit | Package prepared for shipping | Confirmation emails |
karla_shipment_in_transit | Package moving through network | Journey updates |
karla_shipment_carrier_delay | Carrier-reported delays | Proactive communication |
karla_shipment_damaged | Package damage reported | Customer service outreach |
karla_shipment_out_for_delivery | Package out for delivery | Delivery notifications |
karla_shipment_delivered | Successful delivery | Delivery confirmations |
karla_shipment_delivered_all_events | All delivery variations | Comprehensive delivery flows |
karla_shipment_delivered_to_letterbox | Delivered to letterbox | Specific delivery method |
karla_shipment_delivered_to_neighbour | Delivered to neighbor | Neighbor delivery notification |
karla_shipment_delivered_to_parcel_locker | Delivered to parcel locker | Pickup instructions |
karla_shipment_delivered_to_parcel_shop | Delivered to pickup point | Pickup notifications |
karla_shipment_delivery_failed | Delivery attempt failed | Retry communications |
karla_shipment_delivery_failed_address_issue | Address problems | Address correction requests |
karla_shipment_delivery_failed_forwarded_to_parcel_shop | Forwarded to pickup | Alternative pickup location |
karla_shipment_delivery_second_attempt | Reattempting delivery | Second attempt notifications |
karla_shipment_not_picked_up_then_returned | Not picked up, returned | Return notifications |
karla_shipment_refused_then_returned | Customer refused package | Return processing |
karla_shipment_failed_returned | Package returned to sender | Return confirmations |
karla_shipment_picked_up | Successfully picked up | Pickup confirmations |
karla_shipment_lost | Package lost in transit | Loss notification and next steps |
karla_shipment_delayed_due_to_customer_request | Customer requested delay | Confirmation of delay request |
Priority Guide for Workflows
High Priority (Essential workflows):
karla_shipment_in_transit
- Keep customers informedkarla_shipment_out_for_delivery
- Delivery readinesskarla_shipment_delivered
- Delivery confirmationkarla_shipment_carrier_delay
- Proactive communicationkarla_shipment_delivered_all_events
- Any delivery event
Medium Priority (Enhanced experience):
karla_shipment_delivered_to_parcel_shop
- Pickup instructionskarla_shipment_delivery_failed
- Retry coordinationkarla_shipment_damaged
- Customer service escalation
Lower Priority (Edge cases):
karla_shipment_not_picked_up_then_returned
- Return processingkarla_shipment_failed_returned
- Return confirmationkarla_claim_created
- Claims management
Common Use Cases
Post-Delivery Review Request
Event Group: karla_shipment_delivered
Timing: 2-3 days after delivery
Content: Thank you message + review request
Pickup Reminder
Event Group: karla_shipment_delivered_to_parcel_shop
Timing: Immediate + daily reminders
Content: Pickup location, hours, deadline
Delivery Issue Resolution
Event Group: karla_shipment_delivery_failed
Timing: Immediate
Content: Failed reason, next steps, support link
Proactive Delay Communication
Event Group: karla_shipment_carrier_delay
Timing: As soon as delay detected
Content: New ETA, apology, compensation if applicable
Best Practices
1. Email Content Guidelines
- Be Specific: Reference the exact delivery status
- Include CTAs: Add tracking links and next steps
- Personalize: Use customer and order data available from the event
- Mobile-Optimize: Most tracking emails are read on mobile
2. Testing Recommendations
- Test each event group workflow separately
- Verify personalization tokens populate correctly
- Check email rendering across devices
- Monitor delivery rates and engagement
Troubleshooting
Events Not Triggering Emails
- Verify event group name matches exactly (case-sensitive)
- Check integration credentials are active
- Confirm workflow is published in HubSpot
- Test with Karla test events
Missing Data in Emails
- Ensure all personalization tokens match the event properties
- Check token syntax (
{{ contact.field_name }}
) - Verify contact property mapping
Email Delivery Issues
- Check HubSpot sending logs
- Verify customer email addresses
- Review spam folder placement
- Check domain authentication (SPF/DKIM)
Cannot Find Private Apps Option
- Verify you have Super Admin permissions
- Check if your HubSpot subscription tier supports Private Apps
- Try looking under Settings → Integrations → API Key (for legacy setups)
- Contact HubSpot support to enable Private Apps for your account
Token Not Working
- Ensure you copied the complete token
- Verify the selected scopes match the requirements above
- Check that you're using your production account, not a test account
- Confirm the Private App is active (not deactivated)
Security Best Practices
- Rotate tokens periodically - You can regenerate the token in HubSpot without breaking the integration (just update it in Karla)
- Monitor app activity - HubSpot provides logs of API calls made by your Private App
- Limit scopes - Only grant the minimum required permissions listed above
- Use secure channels - Never share tokens via email or public channels
Support
- Karla Integration Support: [email protected]
- HubSpot Technical Support: Refer to your HubSpot account manager
- Technical Documentation: Karla Events
Next Steps
- Identify which event groups align with your communication strategy
- Create workflows for your priority events
- Design and test email templates
- Monitor performance and optimize