curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"timezone": ""
}'import requests
url = "https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking"
payload = { "timezone": "" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({timezone: ''})
};
fetch('https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'timezone' => ''
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking"
payload := strings.NewReader("{\n \"timezone\": \"\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"timezone\": \"\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"timezone\": \"\"\n}"
response = http.request(request)
puts response.read_body{
"id": "68b1c0d4e7b91d003c45a1f8",
"account_name": "Nordwind Furniture",
"google_customer_id": "1234567890",
"status": "ACTIVE",
"currency_code": "EUR",
"timezone": "Europe/Berlin",
"budget_active": true,
"billing_cadence": "1w",
"charge_trigger_mode": "cadence",
"monthly_spend_cap_micros": 500000000,
"auto_renew": true,
"budget_window_end": "2026-09-30T23:59:59Z",
"terms_accepted_at": "2026-08-25T11:20:00Z",
"business_profile_location_id": "locations/12345",
"customer_grade": 1,
"active_campaign_limit": 3,
"total_campaign_limit": 5,
"created_date": "2026-08-25T11:20:00Z",
"updated_date": "2026-08-25T14:05:00Z"
}Create Google Ads account for tracking
Creates the app’s Google Ads account without launching a campaign, so you can wire conversion tracking before launch.
The account has no campaign and nothing is charged. Calling it again returns the same account. Then call Build Google Ads tracking fix prompt, install its tracking_snippet and conversions, and publish the app, so campaigns launched afterwards can serve straight away instead of starting paused.
curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"timezone": ""
}'import requests
url = "https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking"
payload = { "timezone": "" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({timezone: ''})
};
fetch('https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'timezone' => ''
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking"
payload := strings.NewReader("{\n \"timezone\": \"\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"timezone\": \"\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/google-ads/accounts/ensure-for-tracking")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"timezone\": \"\"\n}"
response = http.request(request)
puts response.read_body{
"id": "68b1c0d4e7b91d003c45a1f8",
"account_name": "Nordwind Furniture",
"google_customer_id": "1234567890",
"status": "ACTIVE",
"currency_code": "EUR",
"timezone": "Europe/Berlin",
"budget_active": true,
"billing_cadence": "1w",
"charge_trigger_mode": "cadence",
"monthly_spend_cap_micros": 500000000,
"auto_renew": true,
"budget_window_end": "2026-09-30T23:59:59Z",
"terms_accepted_at": "2026-08-25T11:20:00Z",
"business_profile_location_id": "locations/12345",
"customer_grade": 1,
"active_campaign_limit": 3,
"total_campaign_limit": 5,
"created_date": "2026-08-25T11:20:00Z",
"updated_date": "2026-08-25T14:05:00Z"
}Authorizations
Personal access token, sent as Authorization: Bearer <token>. Each operation lists the permission it needs: read_only or full_access. A full-access token can call every operation. A read-only token can call only the operations that list read_only; anything else returns 403 read_only_credential_route_not_allowed.
Path Parameters
ID of the app to advertise.
Body
Response
The app's Google Ads account.
The response is of type Response Ensure Account For Tracking Api Apps App Id Google Ads Accounts Ensure For Tracking Post · object.
Was this page helpful?