Introducere
Pentru cine este acest ghid:
- Dezvoltatori și ingineri software care integrează funcții WhatsApp în sisteme CRM, SaaS sau de afaceri personalizate;
- Integratori no-code și specialiști în automatizare care folosesc Make, Zapier sau n8n;
Cazuri de utilizare:
- Crearea automată a grupurilor dedicate de asistență sau de integrare a clienților;
- Sincronizarea listelor de participanți ai grupului cu etapele de vânzări din CRM;
- Difuzarea anunțurilor și alertelor tranzacționale în chat-urile de grup;
- Conectarea chatbot-urilor interactivi la conversațiile de grup;
Cerințe preliminare:
- Un număr de WhatsApp activ standard (aplicație personală sau de afaceri obișnuită, nu WABA oficial);
- Cunoștințe de bază despre solicitările HTTP sau acces la o platformă de automatizare no-code;
Ce poți face cu Grupurile WhatsApp prin API
- Trimite mesaje către grupuri: Trimite actualizări, anunțuri sau remindere direct în orice grup.
- Creează grupuri WhatsApp noi: Generează automat grupuri pe baza unor evenimente precum onboarding-ul clienților sau înscrierea la cursuri.
- Adaugă membri într-un grup: Invită contacte în grup programatic, fără aprobare manuală.
- Promovează membri la administratori: Atribuie sau revocă drepturi de admin pentru participanți selectați.
- Preia participanții grupului: Obține lista completă de membri pentru analiză sau sincronizare cu CRM-ul.
- Detectează evenimente în grup: Monitorizează mesaje, intrări și ieșiri folosind webhook-uri.
- Conectează boți la grupuri: Permite boților să citească și să răspundă la mesaje de grup conform logicii definite.
De ce API-ul oficial de grupuri Meta eșuează în producție
| Limită funcție | API oficial WhatsApp Business | Gateway Whapi.Cloud |
|---|---|---|
| Limita de membri ai grupului | Strict limitată la 8 participanți | Până la 1024 de membri (limita standard WhatsApp) |
| Bariera de verificare | Necesită verificarea companiei în Meta și insigna albastră (OBA) | Nu este necesară verificarea; conectați orice număr activ |
| Viteza de activare | Zile sau săptămâni de evaluare a cererilor | Sub două minute prin scanarea rapidă a codului QR |
| Structura costurilor | Tarife bazate pe sesiuni contorizate | Abonament lunar fix și previzibil |
| Media și acțiuni | Doar mesaje șablon de bază | Acces complet la grupuri, canale, statusuri și cataloage |
Cum să îți conectezi WhatsApp-ul și să începi să folosești API-ul
- 1) Accesează dashboard-ul și deschide Canalul Implicit — este deja creat pentru tine.
- 2) La Pasul 1 vei vedea un cod QR cu instrucțiuni.
- 3) Pe telefon, deschide WhatsApp → Setări → Dispozitive conectate → Conectează un dispozitiv, apoi scanează codul QR.
- 4) După conectare, dă un nume canalului (ex: "Chatbotul Meu") pentru identificare ușoară.
- 5) Vei fi redirecționat la ecranul de setări al canalului, poți sări acest pas și reveni ulterior.
Cum să trimiți mesaje către grupuri WhatsApp prin API (cu exemple de cod)
[email protected]. Deoarece aceste identificatoare sunt invizibile în aplicațiile mobile sau web standard, ele trebuie recuperate programatic folosind endpoint-ul Get Groups înainte de a trimite mesaje.- 1) Mai întâi, obține ID-ul grupului. Folosește endpoint-ul
GET /groupspentru a prelua lista grupurilor WhatsApp cu identificatorii lor unici. Pentru detalii complete, vezi documentația: Get groups. - 2) Odată ce ai ID-ul grupului, poți trimite un mesaj. Generează grupuri automat pe baza unor evenimente precum onboarding-ul clienților. Folosește endpoint-ul
POST /messages/text, specificând ID-ul grupului în parametrultoși conținutul mesajului înbody. Pentru detalii, vezi: Send text message.
Poți obține ID-ul grupului folosind endpoint-ul Get groups sau verificând conversațiile recente prin endpoint-ul chats.
- 1) La crearea unui grup, ID-ul va fi specificat în răspunsul API. Mai jos arătăm cum;
- 2) Endpoint Get a list of groups;
- 3) Endpoint Get a list of all chats;
curl --request POST \
--url https://gate.whapi.cloud/messages/text \
--header 'accept: application/json' \
--header 'authorization: Bearer YOUR_API_TOKEN' \
--header 'content-type: application/json' \
--data '
{
"to": "[email protected]",
"body": "Hello, this message was sent via API!"
}
'
// composer require guzzlehttp/guzzle
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://gate.whapi.cloud/messages/text', [
'body' => '{"to":"[email protected]","body":"Hello, this message was sent via API!"}',
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer YOUR_API_TOKEN',
'content-type' => 'application/json',
],
]);
echo $response->getBody();
# python -m pip install requests
import requests
url = "https://gate.whapi.cloud/messages/text"
payload = {
"to": "[email protected]",
"body": "Hello, this message was sent via API!"
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
// npm install axios --save
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://gate.whapi.cloud/messages/text',
headers: {
accept: 'application/json',
'content-type': 'application/json',
authorization: 'Bearer YOUR_API_TOKEN'
},
data: {to: '[email protected]', body: 'Hello, this message was sent via API!'}
};
axios
.request(options)
.then(res => console.log(res.data))
.catch(err => console.error(err));
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"to\":\"[email protected]\",\"body\":\"Hello, this message was sent via API!\"}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/text")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
//dotnet add package RestSharp
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/messages/text");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer YOUR_API_TOKEN");
request.AddJsonBody("{\"to\":\"[email protected]\",\"body\":\"Hello, this message was sent via API!\"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
Trimiterea fișierelor media și a documentelor în grupuri
POST /messages/image of POST /messages/document.to, o URL directă de fișier public în media și o descriere opțională în caption.// Send an image or PDF document to a WhatsApp group
const groupId = "[email protected]";
const res = await fetch('https://gate.whapi.cloud/messages/image', {
method: 'POST',
headers: {
'accept': 'application/json',
'content-type': 'application/json',
'authorization': `Bearer ${process.env.WHAPI_TOKEN}`
},
body: JSON.stringify({
to: groupId,
media: "https://whapi.cloud/assets/img/whapi/logo-text.svg",
caption: "Welcome to your automated support channel!"
})
});
const result = await res.json();
console.log("Media message sent:", result);
Cum să trimiți mesaje către grupuri folosind instrumente no-code precum Make sau n8n
GET https://gate.whapi.cloud/groups
POST https://gate.whapi.cloud/messages/text to: ID-ul grupului.body: conținutul mesajului
Cum să creezi un grup WhatsApp prin API
- 1) Folosește metoda
POSTcu endpoint-ulhttps://gate.whapi.cloud/groupspentru a crea un grup nou. Furnizează numele grupului în parametrul subject și include cel puțin un număr în parametrul participants — acest lucru este necesar pentru crearea cu succes a grupului. - 2) După crearea cu succes, API-ul va returna un ID de grup. Vei avea nevoie de acest identificator pentru a trimite mesaje către grup.
- 3) Pentru a trimite un mesaj către grup, folosește metoda standard de trimitere a mesajelor. Specifică ID-ul grupului în parametrul
toși conținutul înbody.
participants pentru a asigura crearea cu succes.
curl --request POST \
--url https://gate.whapi.cloud/groups \
--header 'accept: application/json' \
--header 'authorization: Bearer Your_Token' \
--header 'content-type: application/json' \
--data '
{
"participants": [
"498935516106",
"4915155985667"
],
"subject": "SEO Common GmbH"
}
'
// composer require guzzlehttp/guzzle
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://gate.whapi.cloud/groups', [
'body' => '{"participants":["498935516106","4915155985667"],"subject":"SEO Common GmbH"}',
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer Your_Token',
'content-type' => 'application/json',
],
]);
echo $response->getBody();
# python -m pip install requests
import requests
url = "https://gate.whapi.cloud/groups"
payload = {
"participants": ["498935516106", "4915155985667"],
"subject": "SEO Common GmbH"
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": "Bearer Your_Token"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
// npm install axios --save
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://gate.whapi.cloud/groups',
headers: {
accept: 'application/json',
'content-type': 'application/json',
authorization: 'Bearer Your_Token'
},
data: {participants: ['498935516106', '4915155985667'], subject: 'SEO Common GmbH'}
};
axios
.request(options)
.then(res => console.log(res.data))
.catch(err => console.error(err));
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"participants\":[\"498935516106\",\"4915155985667\"],\"subject\":\"SEO Common GmbH\"}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/groups")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer Your_Token")
.build();
Response response = client.newCall(request).execute();
//dotnet add package RestSharp
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/groups");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
request.AddJsonBody("{\"participants\":[\"498935516106\",\"4915155985667\"],\"subject\":\"SEO Common GmbH\"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
Cum să creezi un grup WhatsApp folosind o platformă no-code
POST către https://gate.whapi.cloud/groups cu subject (numele grupului) și participants (array de numere).{
"participants": [
"498935516106",
"4915155985667"
],
"subject": "SEO Common GmbH"
}
Cum să adaugi participanți într-un grup WhatsApp
- 1) Asigură-te că ai ID-ul grupului în care vrei să adaugi membri. Acesta este un parametru obligatoriu. Am explicat mai sus cum să obții ID-ul.
- 2) Trimite o cerere
POSTcătrehttps://gate.whapi.cloud/groups/{GroupID}/participantspentru a adăuga membri noi. Trebuie să incluzi ID-ul grupului în URL și să furnizezi un array de numere de telefon pentru participanții pe care vrei să îi adaugi.
Adăugare directă vs Link-uri de invitație
POST /groups/{GroupID}/participants adaugă utilizatorii în chat-urile de grup instantaneu, evitând rata de abandon a clienților potențiali cauzată de obicei de link-urile de invitație.GET /groups/{GroupID}/invite și trimiteți-l într-un mesaj personal.
curl --request POST \
--url https://gate.whapi.cloud/groups/120367831625595066%40g.us/participants \
--header 'accept: application/json' \
--header 'authorization: Bearer Your_Token' \
--header 'content-type: application/json' \
--data '
{
"participants": [
"373983445541",
"373983445542",
"373983445543"
]
}
'
// composer require guzzlehttp/guzzle
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://gate.whapi.cloud/groups/120367831625595066%40g.us/participants', [
'body' => '{"participants":["373983445541","373983445542","373983445543"]}',
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer Your_Token',
'content-type' => 'application/json',
],
]);
echo $response->getBody();
# python -m pip install requests
import requests
url = "https://gate.whapi.cloud/groups/120367831625595066%40g.us/participants"
payload = { "participants": ["373983445541", "373983445542", "373983445543"] }
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": "Bearer Your_Token"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
// npm install axios --save
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://gate.whapi.cloud/groups/120367831625595066%40g.us/participants',
headers: {
accept: 'application/json',
'content-type': 'application/json',
authorization: 'Bearer Your_Token'
},
data: {participants: ['373983445541', '373983445542', '373983445543']}
};
axios
.request(options)
.then(res => console.log(res.data))
.catch(err => console.error(err));
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"participants\":[\"373983445541\",\"373983445542\",\"373983445543\"]}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/groups/120367831625595066%40g.us/participants")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer Your_Token")
.build();
Response response = client.newCall(request).execute();
//dotnet add package RestSharp
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/groups/120367831625595066%40g.us/participants");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
request.AddJsonBody("{\"participants\":[\"373983445541\",\"373983445542\",\"373983445543\"]}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
Cum să adaugi participanți într-un grup folosind instrumente no-code
https://gate.whapi.cloud/groups/[email protected]/participants.@ cu %40.{
"participants": [
"373983445541",
"373983445542",
"373983445543"
]
}
Automatizare no-code în lumea reală: crearea automată a grupurilor de suport (Make și n8n)
- Creați grupul: trimiteți o cerere
POST /groupscu un subiect precum "Asistență clienți: Nume companie" și numărul dvs. principal de bot. - Adăugați participanți: apelați
POST /groups/{groupId}/participantspentru a adăuga numărul de telefon al clientului și managerul de cont desemnat. - Trimiteți un mesaj de bun venit: trimiteți o cerere
POST /messages/imagesauPOST /messages/textpentru a livra un PDF de integrare sau un banner de bun venit.
| Calea de automatizare | Când să alegeți | Avantaje cheie |
|---|---|---|
| Make / n8n (No-Code) | Prototipare rapidă și operațiuni pentru întreprinderi mici și mijlocii. | Depanare vizuală, conectori pre-construiți, costuri zero de întreținere a serverului. |
| Cod personalizat (Node.js / Python) | Aplicații de mare volum pentru întreprinderi și sincronizări complexe de baze de date. | Costuri de rulare mai mici, gestionare completă a erorilor, scalabilitate nelimitată. |
Cum să preiei participanții unui grup WhatsApp prin API
- 1) Asigură-te că ești membru al grupului pe care vrei să-l accesezi. Fără acest lucru, nu vei putea prelua lista de participanți.
- 2) Folosește metoda API Get Groups pentru a prelua toate grupurile asociate contului tău WhatsApp. Dacă știi deja ID-ul grupului dorit, consultă-l direct folosind endpoint-ul Get group.
- 3) Răspunsul va include un array de obiecte grup, fiecare conținând informații precum ID-ul, numele și un câmp participants cu lista membrilor. Exemplu de răspuns:
{
"id": "[email protected]",
"name": "A group of researchers",
"participants": [
{ "id": "972558557032", "rank": "member" },
{ "id": "14409416972", "rank": "creator" },
{ "id": "905589461962", "rank": "member" }
]
}
curl --request GET \
--url 'https://gate.whapi.cloud/groups?count=100' \
--header 'accept: application/json' \
--header 'authorization: Bearer Your_Token'
// composer require guzzlehttp/guzzle
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://gate.whapi.cloud/groups?count=100', [
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer Your_Token',
],
]);
echo $response->getBody();
# python -m pip install requests
import requests
url = "https://gate.whapi.cloud/groups?count=100"
headers = {
"accept": "application/json",
"authorization": "Bearer Your_Token"
}
response = requests.get(url, headers=headers)
print(response.text)
// npm install axios --save
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://gate.whapi.cloud/groups?count=100',
headers: {accept: 'application/json', authorization: 'Bearer Your_Token'}
};
axios
.request(options)
.then(res => console.log(res.data))
.catch(err => console.error(err));
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/groups?count=100")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer Your_Token")
.build();
Response response = client.newCall(request).execute();
//dotnet add package RestSharp
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/groups?count=100");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
Cum să preiei membrii unui grup WhatsApp prin no-code
GET către https://gate.whapi.cloud/groups pentru a prelua toate grupurile din care faci parte, cu detalii despre fiecare — inclusiv informații despre participanți.GET https://gate.whapi.cloud/groups/{GroupID} pentru a prelua datele unui grup specific.Cum să conectezi un bot la un grup WhatsApp
- Creează un bot WhatsApp în Node.js;
- Creează un bot WhatsApp în Python;
- Creează un bot WhatsApp în PHP;
- Creează un bot WhatsApp în Java;
chat_id, care va avea formatul [email protected] (spre deosebire de un număr de telefon în chat-uri private). Câmpul from va indica numărul expeditorului din grup.Sfaturi, limitări și bune practici
- Nu adăuga utilizatori în grupuri fără consimțământul lor. Respectă confidențialitatea și evită invitațiile nesolicitate;
- Evită trimiterea de spam sau conținut nedorit, deoarece contul tău poate fi marcat sau blocat permanent;
- Whapi.Cloud nu impune limite stricte de viteză pentru API pe canalele plătite, dar WhatsApp poate raporta conturile care trimit mai mult de ~20 de mesaje pe minut fără istoric de încălzire. Utilizați un ritm uman și întârzieri aleatorii de 1.5–3.5 secunde între acțiuni.
PATCH /groups/{GroupID}/admins imediat după crearea grupului. Dacă botul principal se deconectează, administratorul secundar poate adăuga din nou și promova un nou bot. Consultați și Promote to Group Admin.// PATCH https://gate.whapi.cloud/groups/{groupId}/admins
const groupId = "[email protected]";
const res = await fetch(`https://gate.whapi.cloud/groups/${groupId}/admins`, {
method: 'PATCH',
headers: {
'accept': 'application/json',
'content-type': 'application/json',
'authorization': `Bearer ${process.env.WHAPI_TOKEN}`
},
body: JSON.stringify({
participants: ["4915155985667"]
})
});
const status = await res.json();
console.log("Admin promotion status:", status);
Depanarea problemelor
Botul nu răspunde la mesajele primite
- Asigurați-vă că trimiteți mesaje la numărul pe care rulează botul, de pe un alt telefon. Botul nu va putea reacționa la mesajele trimise de pe același număr.
- Dacă botul nu reacționează la mesaje de pe alte numere, verificați funcționarea webhook-urilor. Utilizați servicii pentru simularea webhook-urilor, de exemplu, Webhook.site, pentru a vă asigura că cererile de callback vin pe calea corectă. După aceea, verificați dacă calea corespunde celei configurate de dvs. De asemenea, asigurați-vă că serverul dvs. răspunde cu 200Ok.
Botul trimite mesaje fără oprire
Webhook-uri și probleme comune de automatizare a grupurilor
message_created sau group_updated. Analizați chat_id cu formatul [email protected] pentru a identifica mesajele de grup.
- Buclă de mesaje a botului: asigurați-vă că codul dvs. verifică indicatorul
from_meîn datele primite pentru a evita buclele infinite de răspuns. - Eroare de permisiune refuzată: aceasta se întâmplă când încercați să adăugați un participant în timp ce contul de bot nu este administrator al grupului. Verificați rangul botului prin
GET /groups/{GroupID}. - Lipsa numerelor în listă: sincronizarea metadatelor grupului durează până la 15 secunde. Dacă apelați API-ul imediat după creare, numerele de telefon ale participanților pot dura câteva momente pentru a fi rezolvate.
Nu poți adăuga un utilizator în grup?
- Trebuie să fii administratorul grupului. Doar adminii pot adăuga membri noi.
- Utilizatorul poate avea restricții de invitație în setările de confidențialitate. Dacă este cazul, nu poate fi adăugat automat prin API.
- Grupul poate fi la limita maximă de 1024 participanți. În acest caz, elimină membri inactivi sau creează un grup nou.
- Politicile anti-spam ale WhatsApp pot bloca adăugarea anumitor numere în grupuri — mai ales dacă contactul nu este salvat în agenda dvs. sau nu a interacționat cu dvs. Pentru a reduce acest risc, vă recomandăm cu tărie să adăugați mai întâi contactul în listă în mod programatic, folosind API-ul nostru de adăugare a contactelor.
Mesaj nedelivrat?
- Verifică ID-ul grupului — ID-uri incorecte sau expirate vor duce la eșecul livrării.
- Dacă mesajul este trimis dar nu apare în grup, verifică formatul. De exemplu, grupurile WhatsApp pot să nu afișeze anumite tipuri de conținut, precum imagini webp sau butoane interactive.
Permisiune refuzată?
- Numărul tău nu este recunoscut ca admin al grupului.
- API-ul poate să nu fi sincronizat corect statutul tău de admin sau numărul. În acest caz, încearcă să reautorizezi canalul API pentru a actualiza permisiunile și metadatele.
Membrii grupului nu sunt afișați?
GET /groups sau GET /group, datele grupului sunt puse în coadă pentru sincronizare.Ce înseamnă @lid în lista de participanți?
@lid pentru a proteja confidențialitatea utilizatorului, rezolvați-i la numere de telefon standard folosind GET /contacts/lids sau GET /contacts/ids/{ContactLID}. Consultați ghidul despre rezolvarea identificatorilor @lid anonimi.// GET https://gate.whapi.cloud/contacts/ids/{contactLid}
const contactLid = "1524746986546@lid";
const res = await fetch(`https://gate.whapi.cloud/contacts/ids/${contactLid}`, {
method: 'GET',
headers: {
'accept': 'application/json',
'authorization': `Bearer ${process.env.WHAPI_TOKEN}`
}
});
const { phone } = await res.json();
console.log("Resolved JID phone number:", phone);
Implementare și utilizarea serverelor
Firebase
- Creați un proiect în Consola Firebase;
- Instalați Firebase CLI, urmând instrucțiunile;
- Inițializați Firebase în directorul proiectului dvs. folosind comanda firebase init;
- Desfășurați botul folosind comanda firebase deploy --only functions.
AWS (Amazon Web Services)
- Înregistrați-vă sau autentificați-vă în Consola de Management AWS;
- Creați o nouă funcție Lambda prin consola AWS, alegând API Gateway ca declanșator;
- Încărcați codul botului dvs. în funcția Lambda;
- Configurați API Gateway pentru a interacționa cu botul dvs. în lumea externă.
Heroku
- Creați un cont pe Heroku;
- Instalați Heroku CLI și autentificați-vă;
- Creați o nouă aplicație pe Heroku folosind consola sau comanda heroku create;
- Asociați repoziția dvs. Git cu Heroku și efectuați desfășurarea folosind comenzi git push heroku master;
- Configurați URL-ul webhook furnizat de Heroku.