# Welcome!

Thanks for visiting the guides!

![](/files/-MUvEo_K1zQLy7_5d8L9)

Welcome to the Adastacks Guides! Here you'll find everything you need to be an Adastacks Pro! I realize that not everyone is used to APIs, documentation, and technical jargon so I've tried to make it as easy to follow as possible. That said, I'm always [open to feedback](https://adastacks.com/give-feedback) on how to improve these guides!

{% hint style="info" %}
You will need a paid account of Adalo in order to access the Custom Actions feature, which is essential for the function of Adastacks.
{% endhint %}

## Quick Start

### 1. Create your account to obtain your API Key

An API Key is like a password and a username rolled into one - it tells Adastacks who you are and if you have the credits and permission to use a stack. Your API Key is automatically generated and can be found on your Adastacks Dashboard **- be sure to keep it to yourself!** If you need to get a new API Key for any reason, please [contact me](https://adastacks.com/contact) for a new one. You can find your **Adastacks API Key** in the **Account** section of the Dashboard:

![](/files/-MUOshYv-kmTiky-M0T9)

### 2. There are three main steps for each stack:

1. Copy and paste the URL for the stack you want to use into the Custom Action
2. Create the appropriate inputs for sending your information
3. Replace portions of the URL with the new inputs you made

These steps are fleshed out in more specific detail for each stack.

### 3. Pay attention to warnings and hints.

These tips are there to ensure Adastacks stays functioning at full capacity for all its users. Please help us stay in good graces with our service providers by following these tips. Doing this can also help ensure your actions work the best right out of the gate!

{% hint style="info" %}
This is a sample tip, note, warning, or hint.
{% endhint %}

### 4. Support is available!

Support is available through several channels:

1. The [Adastacks Slack Group](https://join.slack.com/t/adastacks/shared_invite/zt-mzb3e01g-Xg2y9wMXj_OOpoPLLPPPhQ)
2. Email <support@adastacks.com> (for Studio and Pro plan users)
3. These Help Guides
4. Priority support and setup (for Pro plan users only)

### 5. Pick a stack to get started with

* [Transactional SMS](https://docs.adastacks.com/stacks/send-a-text) - Send multi-factor authentication codes, order confirmations and more to your users.
* [Scheduled Notifications](https://docs.adastacks.com/stacks/scheduled-notifications) - Send reminders, delayed notifications, and scheduled event notifications to your users.
* [Email Verification](https://docs.adastacks.com/email-verification) - Send your users a code they can use to verify their email address.


# Stacks

Quick access to the URLs for various stacks.

## Email Verification

[**See Full Guide >**](https://docs.adastacks.com/email-verification)

```
https://adastacks.app.n8n.cloud/webhook/email-verify?subject=SUBJECT&from_email=FROMEMAIL&to_email=TOEMAIL&website_url=WEBSITEURL&logo_url=LOGOURL&greeting=GREETING&instructions=INSTRUCTIONS&code=CODE&opt_instructions=OPTINSTRUCTIONS&salutation=SALUTATION&signature=SIGNATURE&company_name=COMPANYNAME&company_tagline=COMPANYTAGLINE
```

## Transactional SMS

[**See Full Guide >**](https://docs.adastacks.com/send-a-text)

```
https://adastacks.app.n8n.cloud/webhook/send-sms?to_phone=TOPHONE&body=TEXTBODY
```

## Scheduled Notifications

[**See Full Guide >**](https://docs.adastacks.com/scheduled-notifications)

```
https://adastacks.app.n8n.cloud/webhook/notify?app_id=APPID&adalo_key=ADALOKEY&to_email=TOUSEREMAIL&notify_title=TITLE&notify_body=BODY&schedule_datetime=DATETIME
```

## Get Date Information

[**See Full Guide >**](https://docs.adastacks.com/stacks/get-date-information)

```
https://adastacks.app.n8n.cloud/webhook/date-info?date=DATE
```


# Email Verification

Send a code to your users' email upon signup which they will put into your app to verify their email.

## Before You Start:

{% hint style="info" %}
**IMPORTANT**: Please ensure the action is placed somewhere other than the Signup form itself. Adalo is still in the process of signing the user up when the action is performed, so no email address is available yet to send the verification to. Best practice is to add the action to the code screen itself or a subsequent onboarding button. Please see [Part 2](https://www.youtube.com/watch?v=SsD9vAHFCaA) of the video tutorial for more on this.
{% endhint %}

{% hint style="info" %}
Once you implement this action in your app, you and your users must use a valid email address for signup. Best practice is to build this functionality in when you are almost finished building your app or after you have created several test users with fake emails.
{% endhint %}

## Video Tutorial

Updated tutorial coming soon!

## What the Email Looks Like (Sample)

![](/files/-MUP8mHRQ_MogCLiJ8NI)

## Walkthrough

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard  (we'll need this for your API Key in a minute)

**2.** ⚠️ Be sure that you have **added** and **verified** at least one email to send from on your Adastacks dashboard. You can learn more about verifying email addresses [here](Https://docs.adastacks.com/appendix#verifying-sending-email-addresses-for-use-with-adastacks).

{% hint style="info" %}
Adastacks uses [Postmark](Https://postmarkapp.com) to verify your sending addresses. You will receive an email from Postmark asking you to verify that you want to give Adastacks permission to use your email to send from.
{% endhint %}

{% hint style="info" %}
Emails you authorize Adastacks to send from **cannot** be free or third party emails such as GMail, Yahoo, Hey, Hotmail, or iCloud.  Verified emails must be legitimate emails on a different domain. \
*For example, <admin@yourwebsite.com>*
{% endhint %}

**3.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**4.** Under the "Click Actions" for the button, select **Custom Action**

**5.** Give your action a name, such as "Send Email Verification Code"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.** Copy the following URL and paste it into the Base URL field of the Custom Action

```
https://adastacks.app.n8n.cloud/webhook/email-verify?subject=SUBJECT&from_email=FROMEMAIL&to_email=TOEMAIL&website_url=WEBSITEURL&logo_url=LOGOURL&greeting=GREETING&instructions=INSTRUCTIONS&code=CODE&opt_instructions=OPTINSTRUCTIONS&salutation=SALUTATION&signature=SIGNATURE&company_name=COMPANYNAME&company_tagline=COMPANYTAGLINE
```

**8.** Set the "Method" dropdown to **POST**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add **Inputs** to hold your data for the new Custom Action (*You can name these whatever you like, but below are some suggestions*)

| Suggested Input Name      | Input Type | Suggested Input Value                                                                      |
| ------------------------- | ---------- | ------------------------------------------------------------------------------------------ |
| **Email Subject**         | Text       | Testing, Testing, 1, 2, 3!                                                                 |
| **From Email**            | Text       | ⚠️ *This **must be** an email you have verified with Adastacks*                            |
| **To Email**              | Text       | ⚠️ *This **must be** a legitimate email or the email will bounce*                          |
| **Website URL**           | Text       | *For testing, you can use any URL here*                                                    |
| **Logo Storage URL**      | Text       | *This must be a **publicly** accessible link to an image file (.png or .jpg is preferred)* |
| **Greeting**              | Text       | Hello Adastacks Friend!                                                                    |
| **Instructions**          | Text       | Below you will find the code for logging in!                                               |
| **Code**                  | Text       | 12345                                                                                      |
| **Optional Instructions** | Text       | Please join us for virtual tea and crumpits later!                                         |
| **Salutation**            | Text       | Thanks!                                                                                    |
| **Signature**             | Text       | Your Adastacks Friends                                                                     |
| **Company Name**          | Text       | *For testing, you can use your app or company name*                                        |
| **Company Tagline**       | Text       | *For testing, you can put any tagline here*                                                |

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/-MaZxLL6wB5RXzZ2Wl4N)

**13.** Run the test request. (See the success screenshot below)

{% hint style="info" %}
Even test actions that fail return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish.
{% endhint %}

![](/files/-MUP1IIoMIJR23ArCdAZ)

**14.** Save the custom action and use it in all of your Adalo apps.


# Transactional SMS

You can send a text to your users through Custom Actions.

## Before You Start:

{% hint style="info" %}
Please ensure your country is currently supported for SMS by [checking the list here](https://airtable.com/shrWbnXTFYOzp9yX8). If your country is not yet supported, you can make a request by filling out [this form](https://airtable.com/shrG8t9gZHJOibBIA). Country support is typically added within 48 hours after the request is submitted.
{% endhint %}

{% hint style="info" %}
All text messages are sent with an opt out message appended in order to comply with SMS regulations and best practices. This message reads "Reply STOP to opt out."&#x20;
{% endhint %}

{% hint style="info" %}
Please **do not** send your users links of any kind at this time. This is read as spam by many carriers.  Your message may be blocked and your sending reputation will be negatively affected. Support for links in text messages is coming soon!
{% endhint %}

{% hint style="info" %}
Please be sure to add an opt-in check box somewhere in your app to maintain compliance with anti-spam laws. Your app may be rejected from the app stores if you do not include this. Please see this example.
{% endhint %}

![Example SMS/Text Message Opt-In upon user signup.](/files/-MUyAS2nyBikhGWUndN3)

## Video Tutorial

Updated video tutorial is coming soon!

## Walkthrough

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard (we'll need this for your API Key in a minute)

**2.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**3.** Once open, place a test button on a screen of your choosing

**4.** Under the "Click Actions" for the button, select **Custom Action**

**5.** Give your action a name, such as "Send Login Code via Text"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.** Copy the following URL and paste it into the Base URL field of the Custom Action

```
https://adastacks.app.n8n.cloud/webhook/send-sms?to_phone=TOPHONE&body=TEXTBODY
```

**8.** Set the "Method" dropdown to **POST**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add **Inputs** to hold your data for the new Custom Action (*You can name these whatever you like, but below are some suggestions*)

| Suggested Input Name  | Input Type | Suggested Input Test Data                        |
| --------------------- | ---------- | ------------------------------------------------ |
| **To Phone Number**   | Number     | *You can use your own phone number to test with* |
| **Text Message Body** | Text       | This is a test verification code: 1234           |

{% hint style="info" %}
The `TO PHONE` must be formatted **with the country code** and **without symbols**.\
For example, to send a message to a US number, the number you send would be **18445551234**\
If you are unsure of the country code, you can visit [this page](https://countrycode.org/).
{% endhint %}

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/-MaZyQJb4bIxgiRZ0oCv)

**13.** Run the test request. (See the success screenshot below)

{% hint style="info" %}
Even test actions that fail return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish.
{% endhint %}

![](/files/-MTMkD9LLB-EUU14Pgnx)

**14.** Save the Custom Action and add it where you need it throughout your app.


# Scheduled Notifications

You can send scheduled or delayed notifications to your users.

## Before You Start:

{% hint style="info" %}
Adastacks does not store your Adalo information. Your Adalo app ID, collection ID, and API key are erased upon the completion of each request.
{% endhint %}

{% hint style="info" %}
Your app **must** be published to the app stores in order for this stack to function. PWA's and web applications built in Adalo do not support native mobile push notifications.
{% endhint %}

## Video Tutorial

Updated video tutorial is coming soon!

## Walkthrough

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard. (we'll need this for your API Key in a minute).

**2.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**3.** Once open, place a test button on a screen of your choosing

**4.** Under the "Click Actions" for the button, select **Custom Action**

**5.** Give your action a name, such as "Create Scheduled Notification"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.** Copy the following URL and paste it into the Base URL field of the Custom Action

```markup
https://adastacks.app.n8n.cloud/webhook/notify?app_id=APPID&adalo_key=ADALOKEY&to_email=TOUSEREMAIL&title=TITLE&body=BODY&scheduled_datetime=DATETIME
```

**8.** Set the "Method" dropdown to **POST**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add **Inputs** to hold your data for the new Custom Action (*You can name these whatever you like, but below are some suggestions*)

| Suggested Input Name   | Input Type | Suggested Input Value                                                                                                                                 |
| ---------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|                        |            |                                                                                                                                                       |
| **Adalo App ID**       | Text       | *For testing, you can make this anything you like*                                                                                                    |
| **Adalo API Key**      | Text       | *For testing, you can make this anything you like*                                                                                                    |
| **To User Email**      | Text       | *For testing, you can make this anything you like*                                                                                                    |
| **Notification Title** | Text       | *For testing, you can make this whatever you like*                                                                                                    |
| **Notification Body**  | Text       | *For testing, you can make this whatever you like*                                                                                                    |
| **Scheduled Datetime** | Text       | <p><strong>2022-12-19T23:24:30Z</strong> </p><p><em>Note that the date formatting when sending in the custom action should be No Formatting.</em></p> |

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/LlqtmuG7qs1wJrRAp8QZ)

**13.** Run the test request. (See the success screenshot below)

{% hint style="info" %}
Even test actions that fail return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish.
{% endhint %}

![](/files/-MUP2sFEgMiG5gFlDGuP)

**14.** Save the Custom Action and add it where you need it throughout your app. See below for an example custom action setup:

![](/files/lfxHNAfjbowbgf6vjZxV)

**15**.  IMPORTANT! Don't forget to format the scheduled date to No Formatting by clicking the pencil icon. If you fail to do this, the notifications will not be sent.

![](/files/BrHvCtMgD7SdYALSn8l6)


# Recurring Notifications

Create notifications that automatically fire at an interval that you determine. When you want to turn them off just delete them using the provided ID.

## Before You Start:

{% hint style="info" %}
For this stack, Adastacks must store your your Adalo app ID and API key to complete each recurring notification. By using this endpoint, you are giving Adastacks permission to do this.
{% endhint %}

{% hint style="info" %}
Your app **must** be published to the app stores in order for this stack to function. PWA's and web applications built in Adalo do not support native mobile push notifications.
{% endhint %}

## Walkthrough

### Setting Up the Actions

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard. (we'll need this for your API Key in a minute).

**2.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**3.** Once open, place a test button on a screen of your choosing

**4.** Under the "Click Actions" for the button, select  **+Add Actions**, then choose **Custom Action**

**5.** Give your action a name, such as "Create Recurring Notification"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.**  The **Base URL** will be determined by what you want to accomplish - you can either Create recurring notifications or you can Delete them. Updating recurring notifications is not currently supported.  First you must setup the Create Recurring Notifications action:

<mark style="color:green;">**Create**</mark>**&#x20;Recurring Notification URL**

```
https://adastacks.app.n8n.cloud/webhook/create-recurring?app_id=APPID&adalo_key=ADALOKEY&to_email=TOUSEREMAIL&title=TITLE&body=BODY&starting_datetime=DATETIME&freq=FREQUENCY
```

**8.** Set the "Method" dropdown to **POST**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add **Inputs** to hold your data for the new Custom Action (*You can name these whatever you like, but below are some suggestions*).

<mark style="color:green;">**Create**</mark> **Recurring Notification Inputs**

| Suggested Input Name   | Input Type | Suggested Input Value                                                                                                                                                                                                         |
| ---------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Adalo App ID**       | Text       | *For testing, you can make this anything you like, but should ideally be your* [*Adalo app ID*](https://docs.adastacks.com/appendix#finding-your-adalo-app-id)                                                                |
| **Adalo API Key**      | Text       | *For testing, you can make this anything you like, but should ideally be your Adalo app's* [*API Key*](https://docs.adastacks.com/appendix#finding-your-adalo-api-key)                                                        |
| **To User Email**      | Text       | *For testing, you can make this anything you like*                                                                                                                                                                            |
| **Notification Title** | Text       | *For testing, you can make this whatever you like*                                                                                                                                                                            |
| **Notification Body**  | Text       | *For testing, you can make this whatever you like*                                                                                                                                                                            |
| **Starting Datetime**  | Text       | <p><strong>2022-12-19T23:24:30Z</strong> </p><p><em>Note that the date formatting when sending in the custom action should be No Formatting.</em></p>                                                                         |
| **Frequency**          | Text       | <p>Allowed values are:</p><p></p><p><strong>D</strong> for daily recurrence</p><p><strong>W</strong> for weekly recurrence</p><p><strong>M</strong> for monthly recurrence</p><p><strong>Y</strong> for yearly recurrence</p> |

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/ZRGEhHF671TjHXGan85P)

**13.** Run the test request and copy the returned ID so you can setup the Delete action. (See the success screenshot below)

{% hint style="info" %}
Even test actions that fail return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish.
{% endhint %}

![](/files/ESdPi6BZQdOmMvnw1Zsq)

{% hint style="info" %}
Note that you should copy the returned ID from the Create Action when setting up the action. This is so that you can setup the Delete action using the generated ID.
{% endhint %}

**14.** Save the Custom Action.  See below for an example custom action setup:

![](/files/l97VODIXKoUACsxr1qkH)

**15**.  IMPORTANT! Don't forget to format the scheduled date to **No Formatting** by clicking the pencil icon. If you fail to do this, the notifications will not be sent.

![](/files/KKx7bNbVrPPQGVM8sLgC)

**16.** Now let's create the Delete Recurring Notification action so that you can delete notifications when a user turns them of&#x66;**.** Select the same test button you created in **Step 3**. This button is only for setting up the custom actions. Once the actions have been created and saved, you can delete this button.

**17.** Under the "Click Actions" for the button, select + **Add Actions**, then choose **Custom Action**

**18.** Give your action a name, such as "Delete Recurring Notification"

**19.** Select the **Delete** option from the dropdown below the Title field, then click **Next**

**20.**  In the **Base URL** field of the custom action, copy and paste the following URL:

<mark style="color:purple;">**Delete**</mark>**&#x20;Recurring Notification URL:**

```
https://adastacks.app.n8n.cloud/webhook/delete-recurring?id=NOTIFICATIONID
```

**21.** Set the "Method" dropdown to **POST**

**22.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**23.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**24.** Add the **Input** to hold your data for the new Custom Action (*You can name this whatever you like, but below is a suggestion*).

<mark style="color:purple;">**Delete**</mark> **Recurring Notifications Input**

| Suggested Input Name | Input Type | Suggested Input Value                                                         |
| -------------------- | ---------- | ----------------------------------------------------------------------------- |
| **Notification ID**  | Text       | Use the generated ID from the Create Recurring Notification action you setup. |

**25.** Replace the **capitalized text** in the URL with the **Input** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/QYa98sOChnirC7EiogC6)

**26.** Run the test request, then click Save Custom Action.&#x20;

{% hint style="info" %}
Even test actions that fail sometimes return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish.
{% endhint %}

![](/files/jXryfGd0Ywettl75cKlY)

### Setting Up the Database Collection

Anytime you create a recurring notification, an ID is returned. You should save this ID to a collection in your Adalo database so that you can delete the notification if you need to. You can name this collection whatever you like - Notifications, Reminders, Events, etc.&#x20;

{% hint style="info" %}
All created notifications are stored outside of Adalo and will run indefinitely until you delete them with the Delete endpoint. You must maintain a collection of notification IDs in order to delete notifications.
{% endhint %}

Anytime you create a recurring notification with the Custom Action, you should also Create a notification in your Notifications collection. At the very least, you should have these properties in your collection:

<table><thead><tr><th>Property Name</th><th width="195.66666666666666">Property Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>ID</strong></td><td>Text</td><td>The is the ID returned by the Create Recurring Notification action.</td></tr><tr><td><strong>Creator</strong></td><td>Relationship - One User to Many Notifications</td><td>This is the creator of the notification. </td></tr><tr><td><strong>Notification Title</strong></td><td>Text</td><td>This is the title of the saved notification</td></tr><tr><td><strong>Notification Body</strong></td><td>Text</td><td>This is the body of the saved notification</td></tr></tbody></table>

![](/files/E3jzMVgezgzUHkLdYR8f)

### Action Setup

Your Create actions might look something like this:&#x20;

![](/files/Gu3vwBJpBbBonwSu3RIb)

## Example App

If you still need help, you can always check out [this cloneable app](https://previewer.adalo.com/02085dd7-4567-4a1e-b698-3621141e7a44) to see how you might build out your screens, database, and actions. If you need additional help, please see one of the many [support](https://www.adastacks.com/support) channels Adastacks has available.


# Get Date Information

This simple action returns phonetic month, month abbreviated, or year of a given date.

[**Try Out this Action in a Sample App! >>**](https://previewer.adalo.com/101c5ef5-953b-4809-b7c0-d2e8ea8efe57)

## Video Tutorial

Updated video tutorial is coming soon!

## Walkthrough

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard. (we'll need this for your API Key in a minute).

**2.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**3.** Once open, place a test button on a screen of your choosing

**4.** Under the "Click Actions" for the button, select **Custom Action**

**5.** Give your action a name, such as "Create Scheduled Notification"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.** Copy the following URL and paste it into the Base URL field of the Custom Action

```markup
https://adastacks.app.n8n.cloud/webhook/date-info?date=DATE
```

**8.** Set the "Method" dropdown to **GET**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add **Inputs** to hold your data for the new Custom Action (*You can name these whatever you like, but below are some suggestions*)

| Suggested Input Name | Input Type | Suggested Input Value     |
| -------------------- | ---------- | ------------------------- |
| **Date**             | Text       | 2021-12-19T23:24:30+00:00 |

{% hint style="info" %}
Be sure that when using the action in your app, you set the Date Format to **No Formatting**
{% endhint %}

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/-Ma_-Cxaw89j7frOWpBT)

**13.** Run the test request. (See the success screenshot below)

![](/files/-MVRjwa5wTm3wMUqR8a6)

**14.** Save the Custom Action and add it where you need it throughout your app.


# Convert String to URL Encoding

Easily convert strings to URL encoding with a custom action.

## Walkthrough

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard (we'll need this for your API Key in a minute)

**2.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**3.** Once open, place a test button on a screen of your choosing

**4.** Under the "Click Actions" for the button, select **Custom Action**

**5.** Give your action a name, such as "Convert String to URL Encoding"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.** Copy the following URL and paste it into the Base URL field of the Custom Action

```
https://adastacks.app.n8n.cloud/webhook/URLencode?string=STRINGTOCONVERT
```

**8.** Set the "Method" dropdown to **POST**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add an **Input** to hold your data for the new Custom Action (*You can name this whatever you like, but below is a suggestion*)

| Suggested Input Name  | Input Type | Suggested Input Test Data                      |
| --------------------- | ---------- | ---------------------------------------------- |
| **String to Convert** | Text       | *Can be any text, number, or symbols you like* |

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/-MjL1pbSkXJAKdCXAmVJ)

**13.** Run the test request. (See the success screenshot below)

{% hint style="info" %}
Even test actions that fail return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish.
{% endhint %}

![](/files/-MjL1ynd9BujTn813LkA)

**14.** Save the Custom Action and add it where you need it throughout your app.


# Shorten a URL

Quickly convert a long URL to a short one courtesy of m3o.com.

## Walkthrough

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard (we'll need this for your API Key in a minute)

**2.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**3.** Once open, place a test button on a screen of your choosing

**4.** Under the "Click Actions" for the button, select **Custom Action**

**5.** Give your action a name, such as "Shorten a URL"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.** Copy the following URL and paste it into the Base URL field of the Custom Action

```
https://adastacks.app.n8n.cloud/webhook/shortenURL?url=LONGURL
```

**8.** Set the "Method" dropdown to **POST**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add an **Input** to hold your data for the new Custom Action (*You can name this whatever you like, but below is a suggestion*)

| Suggested Input Name    | Input Type | Suggested Input Test Data |
| ----------------------- | ---------- | ------------------------- |
| **URL to be Shortened** | Text       | *Should be any valid URL* |

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/-MjMcWJTq0PJxWjO71op)

**13.** Run the test request. (See the success screenshot below)

{% hint style="info" %}
Even test actions that fail return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish.
{% endhint %}

![](/files/-MjMclgcXx9xAxe-TBkJ)

**14.** Save the Custom Action and add it where you need it throughout your app.


# Generate a Barcode

Easily generate image barcodes in various types with this simple custom action.

## Walkthrough

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard (we'll need this for your API Key in a minute)

**2.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**3.** Once open, place a test button on a screen of your choosing

**4.** Under the "Click Actions" for the button, select **Custom Action**

**5.** Give your action a name, such as "Generate Barcode"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.** Copy the following URL and paste it into the Base URL field of the Custom Action

```
https://adastacks.app.n8n.cloud/webhook/barcode?data=BARCODEDATA&type=BARCODETYPE
```

**8.** Set the "Method" dropdown to **POST**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add **Inputs** to hold your data for the new Custom Action (*You can name these whatever you like, but below are some suggestions*)

| Suggested Input Name | Input Type | Suggested Input Test Data                               |
| -------------------- | ---------- | ------------------------------------------------------- |
| **Barcode Data**     | Text       | *Should be any valid URL*                               |
| **Barcode Type**     | Text       | Send one of the following barcode types listed in bold: |
|                      |            | For UPC-A:  **BCL\_UPCA**                               |
|                      |            | For UPC-E:  **S\_UPCE**                                 |
|                      |            | For EAN-8:  **S\_EAN8**                                 |
|                      |            | For EAN-13:  **S\_EAN13**                               |
|                      |            | For Code-128:  **BCL\_CODE128**                         |
|                      |            | For Code-39:  **BCL\_CODE39**                           |
|                      |            | For ISBN-13:  **S\_ISBN**                               |

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/-MjPaA5O-m_fhjYS4JHk)

**13.** Run the test request. (See the success screenshot below). The action will return a URL that you can then save to your database and use as the image source throughout your app.

{% hint style="info" %}
Even test actions that fail return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish.
{% endhint %}

![](/files/-MjPaDeSQm3ZDAAR2Q0L)

**14.** Save the Custom Action and add it where you need it throughout your app.


# Convert String to Base64

Quickly convert text, numbers, and symbols to Base64 encoding with this custom action.  Great for dynamic Basic HTTP Authentication in your Adalo apps!

## Walkthrough

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard (we'll need this for your API Key in a minute)

**2.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**3.** Once open, place a test button on a screen of your choosing

**4.** Under the "Click Actions" for the button, select **Custom Action**

**5.** Give your action a name, such as "Convert String to Base64"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.** Copy the following URL and paste it into the Base URL field of the Custom Action

```
https://adastacks.app.n8n.cloud/webhook/base64?string=STRINGTOCONVERT
```

**8.** Set the "Method" dropdown to **POST**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add an **Input** to hold your data for the new Custom Action (*You can name this whatever you like, but below is a suggestion*)

| Suggested Input Name  | Input Type | Suggested Input Test Data                      |
| --------------------- | ---------- | ---------------------------------------------- |
| **String to Convert** | Text       | *Can be any text, number, or symbols you like* |

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/-MjW1C2XbjJsHimOGbaa)

**13.** Run the test request. (See the success screenshot below)

{% hint style="info" %}
Even test actions that fail return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish.
{% endhint %}

![](/files/-MjW1GiIqKOm_jh_3F9a)

**14.** Save the Custom Action and add it where you need it throughout your app.


# Get Website Link Preview

You know the link preview cards you see on social media? This action returns the information you need to generate those in your own app!

## Video

{% embed url="<https://www.loom.com/share/731b1c15aa504bdba3eb5b311330e27e>" %}

## Walkthrough

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard (we'll need this for your API Key in a minute)

**2.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**3.** Once open, place a test button on a screen of your choosing

**4.** Under the "Click Actions" for the button, select **Custom Action**

**5.** Give your action a name, such as "Get Link Preview"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.** Copy the following URL and paste it into the Base URL field of the Custom Action

```
https://adastacks.app.n8n.cloud/webhook/link-preview?url=URLTOPREVIEW
```

**8.** Set the "Method" dropdown to **POST**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add an **Input** to hold your data for the new Custom Action (*You can name this whatever you like, but below is a suggestion*)

| Suggested Input Name | Input Type | Suggested Input Test Data |
| -------------------- | ---------- | ------------------------- |
| **URL**              | Text       | *Should be any valid URL* |

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/-Mk9EqvKoVK7SiVVV1G-)

**13.** Run the test request. (See the success screenshot below). The action will return enough information about the website for you to build a website preview card complete with a title, description, and sample image.&#x20;

{% hint style="info" %}
Even test actions that fail return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish. If you do not see the results, be sure to click on **Show Full Response** to make sure it returns results. Then you can click on **+ Add Item** to add missing results.
{% endhint %}

![](/files/-Mk9EvUCV_SRBQ4BQfAF)

**14.** Save the Custom Action and add it where you need it throughout your app.


# Get Website Screenshot

This action returns a direct screenshot of a website's screen in 1920x1080 resolution.  It's slightly different from the link preview in that the image returned is an actual browser-view of the page.

{% hint style="info" %}
Note that this endpoint does best with websites that do not require login and do not have popups of any kind. The endpoint merely navigates to the size and screenshots it - no navigation or logins are supported.
{% endhint %}

## Walkthrough

**1.** Login to [Adastacks.com](https://adastacks.com) and navigate to your dashboard (we'll need this for your API Key in a minute)

**2.** Open a new tab in your browser and open up your Adalo app in the Adalo editor

**3.** Once open, place a test button on a screen of your choosing

**4.** Under the "Click Actions" for the button, select **Custom Action**

**5.** Give your action a name, such as "Get Website Screenshot"

**6.** Select the **Create** option from the dropdown below the Title field, then click **Next**

**7.** Copy the following URL and paste it into the Base URL field of the Custom Action

```
https://adastacks.app.n8n.cloud/webhook/screenshot?url=URLTOSCREENSHOT
```

**8.** Set the "Method" dropdown to **POST**

**9.** Add a query parameter called **Content-Type** with the value **application/json**

![](/files/-MaZ7zEwCloG89ck9zcf)

**10.** Add another query parameter called **api\_key** with your Adastacks API Key as the value

![](/files/-MaZwnVzXtyllh_lmNuA)

**11.** Add an **Input** to hold your data for the new Custom Action (*You can name this whatever you like, but below is a suggestion*)

| Suggested Input Name | Input Type | Suggested Input Test Data |
| -------------------- | ---------- | ------------------------- |
| **URL**              | Text       | *Should be any valid URL* |

**12.** Replace the **capitalized text** in the URL with the **Inputs** you just made using the **Magic Text** button in the top right of the URL field.

![](/files/-Mk9uOuN7Wi5V1m6i0Lq)

**13.** Run the test request. (See the success screenshot below). The action will return an image URL for the screenshot. To use it just set the image source in your Adalo app to this returned image URL.&#x20;

{% hint style="info" %}
Even test actions that fail return a "Test Successful" message so be sure to click **Show Full Response** to ensure the action succeeded. This is by design so that you can still save the action and return to continue setting it up later if you wish. If you do not see the results, be sure to click on **Show Full Response** to make sure it returns results. Then you can click on **+ Add Item** to add missing results.
{% endhint %}

![](/files/-Mk9uUx28CyAdYTSk9Wc)

**14.** Save the Custom Action and add it where you need it throughout your app.


# Appendix

This page is filled with additional information to help you get the most out of Adastacks!

## Help, I know nothing. (H,IKN)

No problem, we love newbies!  Here are some quick definitions and explanations to get you up to speed:

* ⚠️ In order to use Adastacks, you'll need a paid version of Adalo.
* A **stack** is simply an action that your app can perform.
* Your **API Key** is your digital key that you will use to give Adastacks permission to perform a stack
* A **URL** is simply a link (like to a website). Adastacks uses these URLs to send data back and forth with Adalo.
* With each action your perform, your credits will diminish, but don't worry - they renew every month for as long as you subscribe to Adastacks.
* **Multi-factor authentication** is the process where generally a code is texted to your phone when logging in to confirm it's you.

Now that you've got some basics down, head on over to the [**Quick Start**](https://docs.adastacks.com/quick-start) to get your feet wet.

## Basics of the Adastacks Credits System

Since each stack costs a different amount of money to run, Adastacks uses *credits* instead of operations or actions like other services. This ensures that if you're sending emails (cheap to do), you don't get charged the same amount as sending text messages (more expensive). This allows you to maximize your credit usage to get the most out your Adastacks plan. Each credit equals about $0.0055 with discounts applied at higher plans.

Each stack costs a different amount of credits. Below you can find a credit costs of each stack:

| Stack Name               | Credit Cost |
| ------------------------ | ----------- |
| Email Verifications      | 0.63        |
| Scheduled Notifications  | 0.45        |
| Transactional Text (SMS) | 1.87        |

## Verifying Sending Email Addresses for Use with Adastacks

In order to send emails to your users using Adastacks, you must first give Adastacks permission to use your email address on your behalf. This is where verified emails come in. Any emails that you verify in Adastacks can be used as "**From"** addresses in email-based stacks. But beware, **you can only verify emails on domains that are not third-party. Emails from Gmail, Yahoo, iCloud, Hotmail, etc. cannot be verified with Adastacks.**

{% hint style="info" %}
Emails from Gmail, Yahoo, iCloud, Hotmail, etc. **cannot** be verified with Adastacks. Adastacks will ignore requests to verify these emails.
{% endhint %}

Furthermore, Adastacks uses [**Postmark**](https://postmarkapp.com) to verify and send emails.  When you verify an email address, you will receive an email from Postmark asking you to verify the email address, thereby giving Adastacks permission to send on your behalf. The email will look similar to this:

![](/files/-MUvCrFpr-haUZserozp)

Once you have clicked the blue "**Confirm Sender Signature**" button in the email, you're ready to use that address with any Adastacks email stack. If you wish to remove the email, just click **Remove** next to the email address in the list on your Adastacks dashboard.

## Finding Your Adalo App ID

You can find the ID of your specific app in the URL when you are in the Adalo editor in your Internet browser. It's the string of letters and numbers after the **apps/** and before the **/screens.**

![](/files/-MUKu7TPGsiRW21J0Atn)

## Finding Your Adalo API Key

You can find your Adalo API key in the **Settings** of your app Adalo editor (the Gear icon) on the left side of the Adalo editor screen. Your API Keys are different for each app. Be sure to save your Adalo app API keys somewhere else as well so that you don't have to regenerate them later on.

![](/files/-MUOyezGn-xYG478UJqS)

## Finding Your Adastacks API Key

An API Key is like a password and a username rolled into one - it tells Adastacks who you are and if you have the credits and permission to use a stack. Your API Key is automatically generated and can be found on your Adastacks Dashboard **- be sure to keep it to yourself!** If you need to get a new API Key for any reason, please [contact me](https://adastacks.com/contact) for a new one. You can find your **Adastacks API Key** in the **Account** section of the Dashboard:

![](/files/-MUOshYv-kmTiky-M0T9)


