How to Build a Human Design Chart Generator in Make.com (No Code, 2026)
Build a Human Design chart generator in Make.com in under 30 minutes: a webhook captures birth data, one HTTP module calls the API, and a router fans the result to email and Google Sheets.
Posted by
Related reading
Does Bodygraph.io Have an API? Human Design Chart Data for Developers
Neither Bodygraph.io nor MyBodygraph offers a public developer API. Here are the three options developers actually use to generate Human Design charts programmatically.
How to Read a Human Design Chart Programmatically
Every Human Design concept paired with the JSON field that surfaces it in the humandesignapi.nl v2 chart response: Type, Profile, Authority, and more.
How to Render an Interactive Human Design Chart with SVG and JavaScript
Turn any humandesignapi.nl v2 response into a working Human Design chart by injecting one <style> block into a pre-themed SVG. No framework and just a few lines of vanilla JavaScript.
What you'll build
You can build a Human Design chart generator in Make.com in under 30 minutes: no code, no server, no Stripe wiring needed for a free MVP. This guide walks through a complete scenario: a webhook captures a birth date, time, and coordinates; a single HTTP module calls POST /v2/charts/coordinates; and a router fans the result out to email and Google Sheets. Total monthly cost on the Developer plan: €35.00 for 10,000 charts.
The finished scenario looks like this: Webhook trigger → HTTP module → Router → Email branch + Sheets branch. Each module passes data to the next through Make's visual mapping interface, so there is no JavaScript to write.
Prerequisites
You need three things before starting:
- A Make.com account. The free tier supports up to 1,000 operations per month, which is enough to build and test this scenario.
- A humandesignapi.nl API key. The Developer plan at €35/month gives you 10,000 credits per month and unlocks
POST /v2/charts/coordinates. You can grab a key after signing up in the dashboard. - Birth data for testing. You need a birth date (YYYY-MM-DD), birth time (HH:MM), and coordinates (latitude and longitude, sent to the API as
latandlng). This endpoint resolves the timezone from the coordinates automatically and does not require a geocoding key, which is what keeps the Make.com setup simple.
The quickstart guide and the authentication reference cover token setup and the full request shape in detail.
Step 1: Create the scenario and add a Webhook trigger
In Make.com, click Create a new scenario. When prompted to add a trigger, search for Webhooks and choose the Custom webhook option. Click Add, give the webhook a name (e.g. "HD chart request"), and copy the generated URL.
Payload structure
The webhook expects a JSON body. Define the structure now so Make.com can map fields downstream. Send a test payload with these fields:
{
"birthdate": "1990-06-15",
"birthtime": "12:30",
"lat":52.3676,
"lng":4.9041
}After sending the test payload, Make.com will show the parsed structure so you can map individual fields in later modules. Click OK to confirm.
If your form already collects latitude and longitude directly, skip Step 1b and use those values in the API call body instead.
Step 1b: Geocode the birth city to coordinates
Most birth-data forms collect a city or country name, not raw coordinates. This step converts a location string to latitude and longitude using OpenStreetMap Nominatim, a free geocoding API with no API key required. Add a second HTTP module directly after the webhook trigger.
Nominatim HTTP module settings
Set Method to GET and URL to:
https://nominatim.openstreetmap.org/search
Under Query String, add three parameters:
q = {{1.location}}
format = json
limit = 1Under Headers, add one header to identify your app. Nominatim requires this to prevent anonymous bulk abuse:
User-Agent: YourAppName/1.0 (your@email.com)
Set Parse response to Yes. The response is a JSON array; because we passed limit=1, there will be exactly one result. Make.com's mapping panel uses 1-based array indices with bracket notation, so the first result's coordinates are available as {{2.data[1].lat}} and {{2.data[1].lon}}.
Rate limit note: the public Nominatim instance caps usage at 1 request per second. A single scenario run stays well within that, but if you later build a batch scenario that geocodes many records, add a Sleep module with at least a 1-second delay between iterations.
Step 2: Add the HTTP module
The HTTP module is where the API call happens. Add an HTTP: Make a request module after the webhook. Fill in the fields as follows.
URL and method
Set Method to POST and URL to:
https://api.humandesignapi.nl/v2/charts/coordinates
Headers
Add two headers under the Headers section:
Authorization: Bearer YOUR_API_KEY Content-Type: application/json
Replace YOUR_API_KEY with the key from your dashboard. Make.com stores this value in the module configuration, not in your payload, so it is never visible in webhook logs.
Request body
Set Body type to Raw and Content type to JSON (application/json). In the Request content field, use Make's variable syntax to map the webhook fields:
{
"birthdate": "{{1.birthdate}}",
"birthtime": "{{1.birthtime}}",
"lat": {{2.data[1].lat}},
"lng": {{2.data[1].lon}}
}Module 1 is the webhook (birth date, time, location). Module 2 is the Nominatim geocoding call (lat, lon). Make.com auto-suggests field names once you type {{2..
If you skipped Step 1b and your webhook payload includes raw coordinates, replace {{2.data[1].lat}} and {{2.data[1].lon}} with {{1.lat}} and {{1.lng}}, and remove the geocoding module entirely.
Parse response
Set Parse response to Yes. This tells Make.com to deserialize the JSON body so downstream modules can map individual fields from data.type, data.profile, and so on, without a separate Parse JSON step.
For the full request reference including all accepted fields and the complete response shape, see the coordinates endpoint guide and the v2 API reference.
Step 3: Map the response to downstream modules
After a successful HTTP call, the parsed response is available in Make.com's variable picker as {{3.data.type}}, {{3.data.profile}}, and so on (module 3 being the HD API call). Add your output modules now.
Email module
Add an Email module (or Gmail, if you prefer). Map these fields into the email body:
- Subject:
Human Design chart for {{1.birthdate}} - Body: a short template referencing
{{3.data.type}},{{3.data.profile}},{{3.data.strategy}}, and{{3.data.authority}}
A simple body template that works well for coaching funnels:
Type: {{3.data.type}}
Profile: {{3.data.profile}}
Strategy: {{3.data.strategy}}
Authority: {{3.data.authority}}
Definition: {{3.data.definition}}
Incarnation Cross: {{3.data.incarnationCross}}Google Sheets module
Add a Google Sheets: Add a Row module. Create a spreadsheet with these column headers and map accordingly:
birthdate→{{1.birthdate}}type→{{3.data.type}}profile→{{3.data.profile}}centers→{{3.data.centers}}(Make.com will serialize the array as a comma-separated string)channels→{{3.data.channelsShort}}
For a deeper look at every field the API returns and what it maps to in Human Design terminology, see How to Read a Human Design Chart Programmatically.
Step 4: Add a Router for errors
A Router module splits the scenario into parallel branches based on conditions. Add one after the HTTP module (before the email and Sheets modules) to handle both success and failure paths.
On Branch 1, set the filter condition to:
{{3.success}} Equal to trueMove the email and Sheets modules onto this branch. On Branch 2, add a filter for {{3.success}} equal to false, and connect a notification module (Slack, email, or any alerting tool). Map {{3.errorCode}} and {{3.message}} into the alert so you know exactly what failed.
The most common error codes are API_KEY_INVALID (your key needs rotating) and INVALID_LATITUDE or INVALID_LONGITUDE (the birth data did not pass validation). Full error code reference: Error handling guide.
Step 5: Test with a real birth date
Click Run once in Make.com, then trigger the webhook with a test payload. The simplest way is a curl command from your terminal (replace the URL with your webhook URL):
curl -X POST "https://hook.eu2.make.com/YOUR_WEBHOOK_ID" \
-H "Content-Type: application/json" \
-d '{
"birthdate": "1990-06-15",
"birthtime": "12:30",
"location": "Amsterdam, Netherlands"
}'In Make.com, the execution log shows each module's input and output. The HTTP module output should include success: true and a data object with all chart fields populated. Response time is sub-500ms globally.
Here is an abbreviated real response for the test input above:
{
"success": true,
"message": "Chart generated from coordinates",
"errorCode": "",
"type": "ChartResult",
"data": {
"type": "Generator",
"profile": "4/6",
"strategy": "To Respond",
"authority": "Sacral",
"definition": "Split",
"centers": ["Sacral", "Spleen"],
"channelsShort": ["34-57", "10-20"],
"incarnationCross": "Right Angle Cross of Planning (37/40 | 9/16)",
"signature": "Satisfaction",
"notSelfTheme": "Frustration"
}
}Cost and rate limits
Each call to POST /v2/charts/coordinates consumes one credit. On the Developer plan, that is €35.00 per month for 10,000 credits, or €0.0035 per chart. On the Scale plan (€47.50/month) you get 50,000 credits.
The rate limit is 100 requests per minute per API key. Make.com scenarios run sequentially per trigger, so a single scenario will never hit this limit organically. If you later build a batch scenario that processes many records in one run, add a Sleep module with a 1-second delay between iterations to stay well within the limit.
If you use the Nominatim geocoding step from Step 1b in a batch scenario, note that the public Nominatim instance has its own, stricter limit of 1 request per second — the same 1-second Sleep module covers both.
Chart data for a given birth input is deterministic: the same date, time, and location always produce the same chart. This means you can store results in Google Sheets or Airtable and skip the API call on repeat lookups. Over time, most of your scenario runs will hit cached data rather than the API.
For the full pricing breakdown and plan comparison, see humandesignapi.nl/pricing. The plans and credits guide covers overage behavior and what happens when you exceed your monthly allocation.
Next steps
Once your Make.com scenario is running, a few directions are worth exploring:
- Add a visual chart. How to Render an Interactive Human Design Chart with SVG and JavaScript walks through turning the API response into a colored bodygraph SVG on any webpage. Zero framework required.
- Switch to Zapier. If your stack is already on Zapier, the setup is similar. Post 2 in this series covers the exact field-by-field Zapier configuration, including the auth header gotcha that catches most first-timers.
- Scale to a full product. If you need a server-side integration, see the quickstart and the agentic tools guide.
FAQ
Do I need a Google geocoding key to use the API in Make.com?
No. The POST /v2/charts/coordinates endpoint accepts latitude and longitude directly and resolves the timezone automatically, so no geocoding key is required. If you only have a city name or postal address, use Make.com's built-in Google Maps module to resolve coordinates first, then pass them to the API.
Can I use the free Make.com tier?
Yes for development and testing. The free tier allows up to 1,000 operations per month. Each scenario run consumes one operation per module, so a five-module scenario uses five operations per run. For production traffic, Move to a paid Make.com plan that matches your expected monthly volume.
What does the API return?
The full response from POST /v2/charts/coordinates includes Type, Profile, Strategy, Authority, Definition, Centers (9 possible), Channels (36 possible), Gates (64 possible), Incarnation Cross, the four Variables arrows, and the full planetary activation grid across 13 positions on both the design and personality sides. For a complete field-by-field walkthrough, see How to Read a Human Design Chart Programmatically.
What happens if I send an invalid birth date?
The API returns HTTP 400 with success: false and an errorCode of INVALID_BIRTHDATE or MISSING_REQUIRED_FIELD, depending on what is wrong. The Router's error branch catches this and fires your alert module. The message field in the response describes the specific validation failure.
Ready to connect?
Get your API key on the Developer plan for €35.00/month and 10,000 charts included. See pricing →
For authentication setup and the full coordinates endpoint reference:
Background on the system: Human Design System (Wikipedia). Make.com HTTP module reference: see here.