Custom Connectors
Build custom connectors or use our pre-built connectors to sync data from any source into LH42.
Pre-Built Connectors
LH42 provides ready-to-use connectors for popular services:
| Connector | Description | Category |
|---|---|---|
| Airtable | Sync bases and tables | Database |
| Asana | Projects, tasks, and comments | Project Management |
| Box | Files and folders | Cloud Storage |
| Confluence | Spaces and pages | Documentation |
| Dropbox | Files and folders | Cloud Storage |
| Figma | Design files and comments | Design |
| GitHub | Repositories, issues, PRs, wikis | Development |
| HubSpot | Contacts, deals, tickets, knowledge base | CRM |
| Jira | Issues, projects, and comments | Project Management |
| Linear | Issues and projects | Project Management |
| Notion | Pages and databases | Documentation |
| Salesforce | Objects, records, knowledge articles | CRM |
| Trello | Boards, cards, and comments | Project Management |
| Zendesk | Tickets and knowledge base articles | Support |
To enable a pre-built connector:
python
# Example: Enable the Notion connector
client.connectors.enable({
"type": "notion",
"auth": {
"token": "your-notion-integration-token"
},
"sources": [
{"type": "workspace"}, # Sync entire workspace
# Or specific pages/databases:
# {"type": "page", "id": "page-id"},
# {"type": "database", "id": "database-id"}
]
})Custom Connector Architecture
For sources not covered by pre-built connectors, build your own:
- Push - Send documents directly via API
- Pull - LH42 fetches from your endpoint
- Webhook - Receive real-time updates
Push Connector
Send documents directly:
python
client.documents.upload(
content="Document content here",
title="External Document",
metadata={
"source": "custom_crm",
"external_id": "crm_12345"
}
)Pull Connector
Register an endpoint for LH42 to fetch from:
python
client.connectors.create({
"name": "CRM Connector",
"type": "pull",
"endpoint": "https://your-api.com/documents",
"auth": {
"type": "bearer",
"token": "your-token"
},
"schedule": "0 */6 * * *"
})Your endpoint must return:
json
{
"documents": [
{
"id": "ext_123",
"title": "Document Title",
"content": "Document content...",
"metadata": {}
}
],
"next_cursor": "cursor_abc"
}Webhook Connector
Receive real-time updates:
python
connector = client.connectors.create({
"name": "CRM Webhook",
"type": "webhook"
})
# Use connector.webhook_url in your system
print(connector.webhook_url)Send updates to the webhook:
bash
POST https://api.lakehouse42.com/v1/webhooks/{id}
{
"action": "upsert",
"document": {
"id": "ext_123",
"title": "Updated Document",
"content": "New content..."
}
}SDK Helpers
Use our SDK for common patterns:
python
from lakehouse42.connectors import BaseConnector
class CRMConnector(BaseConnector):
def fetch_documents(self, cursor=None):
# Your fetching logic
return documents, next_cursor
def transform(self, doc):
# Transform to LH42 format
return {
"title": doc["name"],
"content": doc["description"]
}Best Practices
- Idempotency - Use external IDs to prevent duplicates
- Incremental sync - Track last sync timestamp
- Error handling - Implement retries with backoff
- Monitoring - Log sync status and errors
Request a Connector
Need a connector for a service not listed? Contact us or submit a request through the dashboard.