A customer relationship management (CRM) system is often the centerpiece of a business’s strategic approach to handling customer interactions. A modern CRM provides insights about customers and detailed analytics to improve marketing and inventory planning. It also simplifies collaboration, enhancing team performance in customer support and communication tasks.
A business looking to manage its digital communications can select from a wide range of proprietary CRM systems. Popular open-source systems like Vtiger and Dolibarr are often as viable as industry leaders like Salesforce and Hubspot — the latter, in particular, is a favorite of the developer community. However, although all CRM systems effectively manage purely digital communications, not every CRM is equipped to send, track, or manage print mail.
Print mail, or direct mail, remains one of the most effective means of reaching customers. Researchers found that 64 percent of marketers across eight industries agree direct mail has the highest response rate across marketing channels. The same study also showed 60 percent of marketers confirming that direct mail provides the highest return on investment (ROI).
As offices continue the trend of working from home, customers are more likely to give direct mail immediate attention. These physical interactions, according to a 2021 study conducted by researchers at the University of Tokyo, cause “brain activations related to memory [that are] stronger in participants using a paper notebook than in those using electronic devices.” This research suggests that print’s tactility makes it more impactful and memorable to consumers than digital alternatives.
We can incorporate these benefits into our CRM strategy using Lob’s Automated Direct Mail Platform which enables us to easily automate the process of sending personalized mail to our customers.
Lob’s platform has helped deliver mail to approximately one in two US households. Over 8,500 companies have decreased their processing time, sent direct mail faster, and increased their offline communication ROI using Lob APIs.
Let’s explore how Lob empowers CRM systems to send print mail as easily as they can send an email.
Most CRMs can be customized to collect all sorts of information about customers. You'll want to confirm your CRM is configured to collect physical mailing addresses and that you are capturing this information through online forms or syncing from other systems like your online store, helpdesk software or other datasources.
In our example, the default contact record in Hubspot includes a first name, last name and email address. Additional properties exist in Hubspot and can be added to contacts. Simply select view all properties from the Actions menu from within a contact record.
Locate the street, city, state, postal code and country fields and click “Add to your view”.
You are now ready to collect address information in Hubspot.
How we configure our CRM and add address fields will vary. Refer to your CRM documentation to understand what customization options are available.
Lob makes it easy to integrate direct mail management into existing workflows. Some CRMs either natively integrate Lob or support a Lob add-on. One example is the Lob add-on available in the Salesforce AppExchange. This add-on helps Salesforce users send and track physical mail (such as letters, checks, and postcards) just like email.
In the event that these options are not available in your CRM, you have the option to use third-party workflow automation tools like Zapier or Integromat to help integrate Lob into your CRM. These workflow tools help you set up a trigger to watch for activity in your CRM that causes Lob to perform an action. For instance, you can set a trigger to check your CRM for newly onboarded customers, retrieve their details, and prompt Lob to send print mail with a welcome message and a new customer discount offer.
Lastly, you have the option to build a custom app that connects to, and retrieves contact details stored on your CRM. You can then use Lob’s API to create custom mail pieces using these contact details to populate variables in templates. CRMs commonly open their codebase by providing APIs to developers.
For example, here’s a code snippet to connect to HubSpot CRM’s API from a NodeJS app. In order to retrieve our additional address properties from a contact in Hubspot, you add the properties query param and specify them as a comma separated list for our GET method.
const express = require('express');
const request = require('request-promise-native');
const opn = require('open');
const app = express();
const PORT = 3000;
const HUBSPOT_API_KEY = 'YOUR_HUBSPOT_API_KEY';
const getContact = async () => {
console.log('=== Retrieving a contact from HubSpot ===');
try {
const contacts = await request.get('https://api.hubapi.com/crm/v3/objects/contacts?hapikey=' + HUBSPOT_API_KEY + '&properties=firstname,lastname,email,zip,country,city,state,address');
return JSON.parse(contacts).results[0];
} catch (e) {
console.error(' > Unable to retrieve contact');
return JSON.parse(e.response.body);
}
};
const displayContact = (res, contact) => {
if (contact.status === 'error') {
res.write(`<p>Unable to retrieve contact! Error Message: ${contact.message}</p>`);
return;
}
const { firstname, lastname, address, city, state, zip, country } = contact.properties;
res.write(`<p>Contact retrieved from HubSpot:</p>`);
res.write(`<p>${firstname} ${lastname}</p>`);
res.write(`<p>${address}</p>`);
res.write(`<p>${city} ${state}</p>`);
res.write(`<p>${zip} ${country}</p>`);
};
app.get('/', async (req, res) => {
res.setHeader('Content-Type', 'text/html');
res.write(`<h2>HubSpot Address Example</h2>`);
const contact = await getContact();
displayContact(res, contact);
res.end();
});
app.listen(PORT, () => console.log(`=== Starting your app on http://localhost:${PORT} ===`));
opn(`http://localhost:${PORT}`);
As you may notice above, the CRM provides API keys to achieve the connection. Lob also provides API keys to developers wishing to connect.
With contact details from your CRM, you can use them to create a new address in Lob’s address book. If you plan to send mail to contacts multiple times, you may consider setting up a database to store the contact id and create a foreign key relationship between the CRM contact and the address you create in Lob. This will also allow you to track who you’ve sent mail to, what promotions you’ve sent and when.
In this example code we take the address we retrieved from Hubspot and create a new address using Lob’s Node SDK.
const express = require('express');
const request = require('request-promise-native');
const opn = require('open');
const app = express();
const PORT = 3000;
const HUBSPOT_API_KEY = 'YOUR_HUBSPOT_API_KEY';
const LOB_API_KEY = 'YOUR_LOB_TEST_API_KEY';
const getContact = async () => {
console.log('=== Retrieving contacts from HubSpot ===');
try {
const contacts = await request.get('https://api.hubapi.com/crm/v3/objects/contacts?hapikey=' + HUBSPOT_API_KEY + '&properties=firstname,lastname,email,zip,country,city,state,address');
return JSON.parse(contacts).results[0];
} catch (e) {
console.error(' > Unable to retrieve contact');
return JSON.parse(e.response.body);
}
};
const displayContact = (res, contact) => {
if (contact.status === 'error') {
res.write(`<p>Unable to retrieve contact! Error Message: ${contact.message}</p>`);
return;
}
const { firstname, lastname, address, city, state, zip, country } = contact.properties;
res.write(`<p><strong>Contact retrieved from Hubspot:</strong></p>`);
res.write(`<p>${firstname} ${lastname}</p>`);
res.write(`<p>${address}</p>`);
res.write(`<p>${city} ${state}</p>`);
res.write(`<p>${zip} ${country}</p>`);
};
const createAddress = async (contact) => {
console.log('=== Creating address in Lob ===');
try {
const Lob = require('lob')(LOB_API_KEY);
const { firstname, lastname, email, address, city, state, zip, country } = contact.properties;
const new_address = Lob.addresses.create({
name: firstname + " " + lastname,
email: email,
address_line1: address,
address_city: city,
address_state: state,
address_zip: zip,
address_country: country,
}, function (err, res) {
console.log(err, res);
});
return new_address;
} catch (e) {
console.error(' > Unable to retrieve address');
return JSON.parse(e.response.body);
}
};
const displayNewAddress = (res, address) => {
const { name, address_line1, address_city, address_state, address_zip, address_country } = address;
res.write(`<p><strong>Address created and verified in Lob:</strong></p>`);
res.write(`<p>${name}</p>`);
res.write(`<p>${address_line1}</p>`);
res.write(`<p>${address_city} ${address_state}</p>`);
res.write(`<p>${address_zip} ${address_country}</p>`);
};
app.get('/', async (req, res) => {
res.setHeader('Content-Type', 'text/html');
res.write(`<body style="font-family: arial;">`);
res.write(`<h2>Sync HubSpot Address to Lob Example</h2>`);
const contact = await getContact();
displayContact(res, contact);
const address = await createAddress(contact);
displayNewAddress(res, address);
res.end();
});
app.listen(PORT, () => console.log(`=== Starting your app on http://localhost:${PORT} ===`));
opn(`http://localhost:${PORT}`);
Lob will verify and standardize the address for deliverability.
Lob’s automated direct mail platform features reusable HTML templates, popular SDK offerings, and webhook APIs for mail tracking. We leverage commercial printer networks so we don’t have to deal with the overhead.
The dynamic and reusable HTML templates help save processing time by avoiding manual content creation. We can dynamically retrieve any variables from the CRM we’d like the recipient to see and easily integrate them into the template. This automation helps us avoid mismatches or typographical errors in the print mail from manually processing variables such as names, numbers, addresses, and dates.
The HTML Templates help reduce our dependence on user interfaces (UIs) and frontend development, ensuring rapid digital content preparation for print and mailing. The templates are available for several print formats: a single-page letter, postcard, folded self-mailer, check request, or envelope. Lob provides tips on recommended image sizes and resolutions as well.
For each of these, Lob auto-generates a PDF document based on the contents of our completed template. This document is stored in the cloud and accessible via a URL. A bonus benefit is that we can upload the PDF to our CRM for transmission to our customer via other channels such as email or in-app notifications. Overall, we can reach customers in a more timely and impactful way by using multiple channels. Developers have the option of using a standard http client or one of the SDKs provided by Lob. Lob’s SDK support includes several object-oriented programming languages, like Java, Python, Ruby, PHP, and Elixir, as well as the popular Node.js JavaScript framework. Additionally, curl is available for those who prefer to operate through a command-line interface.
Lob prevents misuse and DoS attacks by enforcing a default rate limit of 150 requests per 5 seconds per endpoint on all Test and Live API Keys, with some high-traffic endpoints set to 300 requests per 5 seconds. Requests to rate-limited endpoints will return an HTTP header with data on remaining limit space and reset time, while excess requests will return an HTTP 429 “Too Many Requests” code.
Lob protects our business data by implementing several security features, including end-to-end encryption, authentication key security, HTTP error responses, redaction, and scheduled deletion. These security features make the Print & Mail API suitable to meet security needs for individual requests, contractual obligations, or industry requirements such as CCPA, GDPR, SOC2, and HIPAA. However, our CRM must handle role-based access control (RBAC) for internal security.
Lob webhooks track direct mail from its creation to its delivery in real time. We can incorporate these webhooks into our CRM workflow to trigger notifications when specific events occur in the mailing transit cycle. Webhooks for mail events also open up the opportunity to orchestrate print communications with digital communications from CRMs. For example, emails can be timed to arrive the same day or a certain number of days after the mail piece arrives to reinforce the message being delivered to their inbox.
Additional features, such as reporting, audit logs, and search for real-time mail statuses, aid in internal reviews, quality assurance, and compliance audits. As well, Lob supports idempotency for retrying POST requests without creating duplicates.
Lob gives us a well-supported way to embrace and introduce print mail into our CRM system. Physical media's formality and relative rarity let us connect more deeply with our customers and leave more permanent impressions.
We can, for example, convert leads using familiar forms of print — letters and postcards — by motivating our customers to shop on our website with a postcard campaign and unique promotional code to track responses. We can also use the Lob Print & Mail API to automatically generate personalized offers, greetings, and information, which we can use to target the customer on their birthday, holidays, or other relevant times. We present a more intentional and high-value aesthetic by using print mail in our CRM, regardless of which strategy we choose.
The Lob Print & Mail API can also powerfully integrate with CRMs to send transactional mail. Whether from the force of habit or a sense of responsibility, many of us prefer to file formal documents as hard copies. Capitalize on this fact by sending bill statements, checks, and invoices as print mail to increase your brand’s perceived value.
The modern CRM helps organizations manage and automate customer life cycle concerns, the sales process, and marketing campaigns, ultimately improving profitability. Many CRMs, however, aren’t equipped to manage print mail distribution and provide no ability to capitalize on the high ROI inherent to paper media.
A CRM-agnostic tool like the Lob Print & Mail API is the best way to translate your CRM’s text and visual content onto print media. Lob provides multiple SDKs, webhooks for monitoring and reporting, and customizable templates with established support for use cases requiring letters, postcards, self-mailers, or check requests.
Explore Lob’s documentation to learn more and start experimenting with the API for your next project.