"Nango handles auth and scale so we didn’t have to.”
We went from zero to 60+ integrations in weeks, syncing tens of millions of jobs a month without breaking a sweat.
Integrate your product with 500+ APIs.
Full control, in code.
import { createSync } from 'nango';
export default createSync({
description: `Sync Google Calendar events from main calendar`,
frequency: 'every 10 minutes',
models: { CalendarEvent: z.object({ id: z.string(), ... }) },
exec: async (nango) => {
const requestConfig = {
method: 'GET',
endpoint: `calendar/v3/calendars/primary/events`,
retries: 10 // Retry request up to 10 times
};
// Paginate results & save changed events
for await (const eventPage of nango.paginate(requestConfig)) {
const mappedEvents = eventPage.map(toEvent);
await nango.batchSave(mappedEvents, 'CalendarEvent');
}
// Delete events that don't exist anymore
await nango.deleteRecordsFromPreviousExecutions('CalendarEvent');
},
});
~ (main)$ nango deploy dev
✔ Typechecking
✔ Building 3 file(s)
✔ Exporting definitions
✔ Compiled
✔ Packaging
✔ Acquiring remote state (https://api.nango.dev)
Nango will perform this plan:
[Syncs +1 -1]
+ google-calendar → calendar-events (1 impacted connections)
- slack → users (2 impacted connections)
[Actions +1 -1]
+ google-calendar → create-calendar-event
- slack → send-message
Summary
↳ Syncs to create [ 1 ] to update [ 0 ] to delete [ 1 ]
↳ Actions to create [ 1 ] to update [ 0 ] to delete [ 1 ]
↳ OnEvents to create [ 0 ] to update [ 0 ] to delete [ 0 ]
Are you sure you want to continue y/n? y
⠧ Deploying 4 functions

.webp)
.webp)



Ship the integrations your customers need with 500+ APIs. Code-first, fully customizable & low maintenance