Make your CRM work for you
with our Teamwork CRM integration

Merge makes adding and maintaining your Teamwork CRM integration dead-simple with a Unified API for CRM.

Sync Teamwork CRM Data

Trusted to power integrations for
Build Smarter

Make integrations your competitive advantage

More sales, less code, fewer headaches

Focus on your core product

Stop diverting your engineers to yet another integration and let them get back to work.

Give customer success a break

Manage your simplified integration issues in a single pane. No therapist required.

Stop losing sales due to integrations

Launch integrations in days, not quarters. Your sales team will thank you.

APIs Made Simple

The toolkit for all your integration needs

We make integrations painless with accessible API design, dead-simple SDKs, and beautiful documentation that we agonize over.

View docs
Get Employee Data
configuration = MergeHRISClient.Configuration()
configuration.api_key['tokenAuth'] = 'API_KEY'
api_client = MergeHRISClient.ApiClient(configuration)
instance = employees_api.EmployeesApi(api_client)
api_response = instance.employees_list('ACCOUNT_TOKEN')
MergeHRISClient.configure do |config|
  config.api_key['tokenAuth'] = 'API_KEY'
  config.api_key_prefix['tokenAuth'] = 'Bearer'
end
api_instance = MergeHRISClient::EmployeesApi.new
token = 'ACCOUNT_TOKEN'
result = api_instance.employees_list(token)
ApiClient.instance.authentications.tokenAuth = {
  type: 'bearer',
  accessToken: 'API_KEY',
};
new EmployeesApi().employeesList('ACCOUNT_TOKEN', {}, (data) => {
  console.log(data);
});
key := "Bearer API_KEY"
configuration := merge_hris_client.NewConfiguration()
configuration.AddDefaultHeader("Authorization", key)
client := merge_hris_client.NewAPIClient(configuration)
employee_list := client.EmployeesApi.EmployeesList()
resp := list.XAccountToken("ACCOUNT_TOKEN").Execute()
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath('https://api.merge.dev/api/ats/v1');
ApiKeyAuth tokenAuth = client.getAuthentication('tokenAuth');
tokenAuth.setApiKey('API_KEY');
CandidatesApi apiInstance = new CandidatesApi(client);
apiInstance.candidatesList('ACCOUNT_TOKEN');
Configuration config = new Configuration();
config.BasePath = "https://api.merge.dev/api/hris/v1";
config.ApiKey.Add("Authorization", "API_KEY");
config.ApiKeyPrefix.Add("Authorization", "Bearer");
var apiInstance = new AccountDetailsApi(config);
var ACCOUNT_TOKEN = ACCOUNT_TOKEN_example;
AccountDetails result = apiInstance.AccountDetailsRetrieve(ACCOUNT_TOKEN);
{
"id": "0958cbc6-6040-430a-848e-aafacbadf4ae",
"remote_id": "19202938",
"employee_number": "2",
"company": "8d9fd929-436c-4fd4-a48b-0c61f68d6178",
"first_name": "Dirna",
"last_name": "Emanuel",
"display_full_name": "Dirna Emanuel",
"username": "dirnaemanuel",
"groups": [
  "21a54124-397f-494d-985e-3c5b330b8a68"
],
"work_email": "dirna@merge.dev",
"personal_email": "dirnaemanuel@gmail.com",
"mobile_phone_number": "+1234567890",
"employments": [
  "17a54124-287f-494d-965e-3c5b330c9a68"
Meta Endpoint

Programmatically access required schemas

Third-party providers require specific (and often different) fields to write data to their APIs, making your code a mess.

Dynamically fetch required data schemas from Merge’s /meta endpoint to make POST or PATCH requests that just work.

View Docs
Beyond Building

Rely on the best integration management system

Let our logs, issue detection, and automated alerts save your customer success team time, money, and headaches.

Forget maintenance - let your developers focus on building!

Start for free

How Drata helps thousands streamline their SOC 2 with Merge

Read case study

​​”Working with Merge’s Unified API and beautiful React component took less than a sprint to integrate, test, and release.”

Daniel Marashlian of profile photo
Daniel Marashlian
Co-Founder & CTO
One Step Ahead

We're the cheat code to your integrations strategy

Revolutionize your integrations strategy for HR, payroll, directory, ATS, project management, ticketing, accounting and CRM platforms.

Start for free or talk to our sales team and learn how Merge makes it easy to add all your integrations in days – not years.
Common Data Model

Build on one data model across every integration

Merge designs common data models for each category of software APIs.

Plug into well-structured data without being an expert in every third-party API.

Trusted to power integrations for
Integrations Platform

Complete API functionality for hundreds of integrations

One integration is never enough

Merge integrates HR, payroll, ATS, accounting, ticketing, CRM, marketing automation, and file storage products — big or small.

Explore integrations
Normalized Data

Say goodbye to data transformations

Merge maps each third-party API to a Common Model with normalized objects and fields.

Forget those SQL queries and data transforms from the past.

View docs
Unified Writes

Read anything, write anything

POST any request you want. Anticipate required fields for any third-party API, entirely programmatically.

For complex schemas, use object relationships and nesting to craft a single request that works across all API providers.

Explore integrations
Normalized Data

Toggle, sync, and filter your customer data

Custom Scopes

Define model and field-level scopes to ensure your users grant access only to the data required for your product's use case.

Selective Sync

Empower your customers to further refine data access with Selective Sync.

Configure which models are pulled based on their attributes — such as candidates who work Remotely or Employees who live in San Francisco.

Normalized Queries

Use normalized data parameters to further limit the data you want to access.

Normalized Data

If it’s possible with an API, it’s possible with Merge

For data that doesn’t fit the Common Model, make API requests directly to third parties or access original API responses prior to normalization.

Capture any other non-standard data you want to structure with Custom Fields.

View docs

How Drata helps thousands streamline their SOC 2 with Merge

Read case study

​​”Working with Merge’s Unified API and beautiful React component took less than a sprint to integrate, test, and release.”

Daniel Marashlian of profile photo
Daniel Marashlian
Co-Founder & CTO