Adalo Resources
Sign Up for Adalo
Adalo Resources
Adalo Resources
  • 🚀Getting Started
  • 🎨Design
    • Designing Your App
      • Definitions and Terms
      • Creating an App
      • Using the Screen Size Switcher
      • Building with Sections
      • Alignment Tools
      • Using the Layout Tab
        • Screen Size Visibility
        • Sticky While Scrolling
        • Shared Layout Settings
        • Custom Layout Settings
      • Grouping Components
      • Responsive Navigation
        • Responsive Side Navigation
          • Side Navigation
          • Title
          • Menu Style
          • Menu Items
          • Bottom Button
          • Profile Section
        • Responsive Top Navigation
          • Navigation Bar
          • Title
          • Menu Items
          • Additional Navigation
          • Profile Image
      • Responsive Design Best Practices
    • Branding
      • Colors
      • Fonts
    • Create Component States
    • Preview Your App
    • Design Versions
    • Additional Design Resources
    • Migrating Legacy Apps
    • Legacy Builder
      • Create Component Containers
      • Positioning Components
      • Arranging and Grouping Components
      • Preview your App (Legacy Builder)
  • 🎬Actions
    • Action Basics
    • Links
    • Change Data
    • Notifications
      • Request Notification Permission in Your App
      • Trigger Push Notifications
      • Testing Notifications
      • Troubleshooting Notifications
        • Notifications Not Working on Android
        • Notifications Not Working on iOS
        • Notifications Not Working on PWA
    • Conditional Actions
    • Permissions
    • App Authentication
  • 🛠️Screens and Components
    • Screens
    • Deep Linking
      • Setup Deep Linking
      • Deep Linking With Data
      • Deep Linking Share Action
      • Deep Linking Redirection & Fallbacks
      • FAQs and Troubleshooting
    • Screen Navigation
    • Component Basics
    • Magic Text
      • Logged-In User vs. Current User
      • How to Format Dates and Numbers
      • Sums, Counts, Averages, Min and Max
      • How to Create a Custom Math Formula
        • Complex Calculations
    • Conditions and Filtering
      • Filtering in Adalo
      • Using Conditions in Adalo
    • Changing a Component's Visibility
    • Lists
      • Sorting and Filtering Lists
      • Creating Custom Lists
      • Lists of Lists
    • Buttons
    • Toggles
    • Forms
    • Simple Components
      • Image Component
      • Text Input
      • Webview Component
        • Troubleshooting Webview
          • Webview URL not loading in Adalo App
          • Webview crashing in Native App
    • Table Component
    • Video Component
    • Marketplace Components
      • How to Add Components from the Marketplace
      • Digital Purchases for In-App Purchases
      • Sign in with Google
      • Sign in with Apple
      • Maps
      • Bar Charts and Line Graphs
      • Pie Chart
      • Google Admob
        • Troubleshooting Admob
          • Ads Not Displaying in Native
      • Calendar
      • Progress Bar
      • Star Rating
      • Stopwatch
      • Slider
      • Lottie Files
      • YouTube
      • Audio Player
        • Troubleshooting Audio Player
          • Apple App Rejection: UIBackgroundModes key
      • Deck Swiper
      • Markdown Renderer
      • Signature
      • Stripe
        • Stripe Payment
        • Stripe Subscription
        • Stripe Connect Marketplace
          • Set up your Stripe Account for Stripe Connect
          • Allow Merchants to Connect their Stripe Account to your App
          • Stripe Connect
          • Stripe Marketplace Payment
        • Configuring Stripe Test Mode
        • Stripe Custom Actions
          • Get Stripe Subscription Data
          • Get Stripe Customer Data using Email Address
        • Legacy Stripe Components (Deprecated)
          • Marketplace Payments
            • Set up your Stripe Account for Stripe Connect
            • Allow Merchants to Connect their Stripe Account to your App
            • Configure Consumer Payment to go to Merchants' Accounts
          • One-time Card Payments
          • Subscription Payments
  • 🧱Feature Templates
    • Browse, Purchase, and Manage Classes
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Category List Screen
      • Classes List Screen
      • Class Details Screen
      • Purchase Screen
      • Congrats Screen
      • Admin Manage Clinics Screen
      • Admin Transactions Screen
      • Admin Create Clinic & Admin Edit Clinic Screens
    • Browse, Purchase, and Manage Events
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Browse Classes
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Category List Screen
      • Classes List Screen
      • Classes Details Screen
    • Classes Admin Dashboard
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Admin Manage Clinics Screen
      • Admin Transactions Screen
      • Admin Create Clinic & Admin Edit Clinic Screen
    • User Chat
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Conversations List Screen
      • Chat Screen
      • New Chat Modal Screen
    • Forum
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Group Messaging
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Messaging Screen
      • Edit Message Modal Screen & Edit Channel Modal Screen
      • Search Messages Screen & Channels Screen
    • Account Settings
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Account Settings Screen
      • Success Modal Screen & Delete Account Confirmation Screen
    • Appointment Booking
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Coaches Screen
      • Time Slots Screen
      • Book Appointment Screen
      • Coach Admin Screen
      • Edit Session Screen
    • Assign Tasks
      • Overview — Screens, Database, Layout Settings, Use Cases
      • My Tasks Screen, Team Tasks Screen, Completed Screen
      • Task Detail Screen
      • Edit Task Screen
    • Agree and Sign
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Terms Screen
      • Agree & Sign Modal Screen
      • Signatures Admin Screen
    • Announcements & Notifications
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Notifications Screen
      • Notify All & Notify One Screens
    • User Profile & Account Settings
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Setup Step 1 Screen
      • Setup Step 2 Screen
      • My Profile Screen
      • Additional Screens
    • Browse Users
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Browse Members & Profile Screen
    • Browse Dates
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Time Slots & Workout Screens
    • Browse Home Listings
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Listings Screen
      • Listing Detail Screen
      • Modal Image Gallery Screen
    • Image Carousel
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Screens
    • Image Gallery Modal
      • Overview — Screens, Database, Layout Settings, Use Cases
    • User Admin Dashboard
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Workout Assignment
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Social Media Feed
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Store with Shopping Cart
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Inventory Management
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Video Gallery & Upload
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Restaurant Ordering
      • Overview — Screens, Database, Layout Settings, Use Cases
  • 🗃️Database
    • Database Property Types
    • Relationships
      • One-to-Many vs. Many-to-One
      • Many-to-Many
    • The User Collection
    • Collection Permissions
    • Importing Records from a CSV File
    • Download your Collection as a CSV File
    • Location
      • Getting Your Google API Key
      • Estimating Google API Usage
      • The Location Property Type
      • Location in Forms and Inputs
      • Location Magic Text and Formatting
      • Getting the User's Location
      • Latitude, Longitude, and Special Formulas
      • Comparing Locations
      • Troubleshooting Location Features
  • 🪄Settings
    • Copying vs Cloning your App
      • How to Copy and/or Delete an App
      • Cloning Apps and Making Apps Cloneable
  • 🚀Performance
    • Builder Performance Tips
    • Optimize App Performance
      • Image Optimization
      • Five Tips for Improving Your Adalo App Performance
  • ✍️Publishing Apps
    • Publishing to the Web
      • Publish to Adalo Subdomain
      • Publish to Custom Domain
      • Troubleshooting Domain Setup
        • Custom Domain is Not Secure
        • Domain Could Not be Verified
        • Error: Not Found
    • Publishing to the Google Play Store
      • Create Your Google Developer Account
      • Create your Firebase Project
      • Register Android App & Download Config File
      • Generate & Download Private Key
      • Get your Build file
      • Create New Google Play Listing
      • Upload your Build file to Google Play Listing
      • Finalize Listing and Release App
      • Troubleshooting Android Release
        • Google Play rejected the app due to data safety issues
        • Error: Android App Signed with Wrong Key.
        • Error: Version Code 'xxx' has already been used. Try another Version code.
        • Error: Package Name already exists in Google Play.
        • Error: Upload a valid app bundle.
        • Error: Existing Users Can't Upgrade to New App Bundles.
    • Publishing to the Apple App Store
      • Create Your Apple Developer Account
      • Setup Annual Payment for your Apple Developer Account
      • Create Your Apple Bundle ID
      • Create Your Adalo ‘App-Specific Password’
      • Start your Build in Adalo
      • Add Users to Your App Store Connect Team
      • Add Users to Testflight
      • Creating Screenshots for the App Store
      • Privacy and App Tracking Transparency
      • Troubleshooting iOS
        • Build Error: You have reached the maximum number of certificates
        • Build Error: You have already reached the maximum allowed number of keys for this service
        • Build Error: Distribution certificate has expired
        • Build Error: Asset Validation Failed - Invalid App Store Icon
        • App Rejected: Add Permission Text to Your iOS Build
        • Delivery warning during the app submission process: ITMS-90899
        • iOS Build Not Showing in Testflight
        • Apple Two-Factor Authentication Error
    • Publishing to the Web (Legacy Apps)
    • Uploading .APK (Legacy)
    • Publishing FAQs
    • Troubleshooting
      • Build Stuck in Queue
  • ▶️Videos
    • Getting Started
    • Full Walkthrough
    • Working with Data
    • Designing your Database
    • Custom Lists
    • Changing Component Visibility
    • Forms
    • Ordering & Payments
    • Math & Custom Formulas
    • Chat
  • 👩‍🏫Tutorials
    • How to Use Keyboard Shortcuts
    • How to Embed Video or Audio (YouTube, Vimeo, SoundCloud)
    • How to Share a Database Between Apps
    • How to Create an Empty State
    • How to Create a Search Bar
    • How to make a list your users can filter
    • How to Create a Modal/Popup Window
    • How to create a "Favorite" button (Legacy Builder)
    • How to add an Image to an App Bar
    • How to send Scheduled Push Notifications
    • Start Maps Navigation in Your Adalo Apps Using Google Maps, Apple Maps, or Waze
    • Generating Map Previews in Your Adalo App Using the Google Static Maps API
    • Special Links: Email, Text (SMS), and Phone
    • How to have a Dropdown Menu in a Form
    • How to Setup a Shopping Cart with Payments
    • How to set up a Public Profile screen for Users
    • How to Allow Users to Follow Others
    • How to have a Form Automatically Set a Relationship
    • How to add Chat to your App
    • How to Create Multi-Sided Apps
    • How to Add an "Add to Calendar" Button for Events
    • Forwarding Domain to Root Address
    • How to Create Temporary User Avatars
    • How to Set Up a Social Media List
    • How to Play Your Spotify Podcast in Adalo’s Audio Player
  • 🧩Integrations
    • The Adalo API
      • Collections API
      • Send Push Notifications via API
    • Xano
      • Setup Your Xano Workspace
      • Connect Xano with Private Swagger
      • Connect Xano to an Adalo App
      • User Signup, Login, Authentication
      • Google Sign In with Xano Database
      • Other Collections
      • Working with Data Types in Adalo and Xano
      • Counting Records with Xano
      • Lists and Pagination
      • Xano Response
      • Xano Tips and Tricks
      • Troubleshooting
    • Accessing your Record ID
    • Custom Actions
      • ✨Power Your App with ChatGPT
    • External Collections with APIs
      • Magic Text in External Collections
    • Airtable
      • Connecting to Airtable
      • Adding/Deleting Properties
      • Displaying Images
      • Working with Lists
        • Images In Lists
        • Filtering Airtable Lists
        • Magic Texts in Lists
        • Limiting the Number of List Items
        • Sorting Airtable Lists
      • Working with Forms
        • Airtable Dropdown fields & Validation
      • Working with Attachments, Images and Airtable relationship Fields
      • Relationships & Airtable Collections
      • Debugging
    • DreamFactory
    • Zapier
    • Make (Formerly Integromat)
      • Create a PDF from a record in Adalo
      • Notification in Slack when a new user registers in your Adalo app
      • Send verification email to new sign ups
      • Send a verification SMS to new sign ups
      • Send a file to Google Drive from Adalo
      • Send new files from a Google Drive folder to an Adalo collection
      • Use Google Vision for OCR an image and store the text results in an Adalo record
    • IAPHUB
    • Mixpanel
    • Troubleshooting the Adalo API
      • List inside of a List not loading
      • Error Codes
  • ⚙️Adalo Account
    • Account
      • Updating Email and Password
      • Enabling Developer Mode
    • Team Members
      • Add Team Members to Your Adalo App
    • Apps
    • Usage and Billing
      • Billing, Invoices, and Payments
      • App Actions Dashboard
    • Domains
      • Resetting SSL
  • ❓FAQs
    • General Questions
    • What can Adalo do?
    • Adalo Pricing: FAQs
    • Adalo Account: FAQs
    • Adalo Subscription Add-Ons
    • Working with an Adalo Freelancer
    • Adalo Experts
    • Adalo Affiliate Program
    • Adalo Pricing: Legacy Accounts
  • 🤔Troubleshooting
  • 📚Additional Resources
    • Adalo App Academy
      • Introduction to Apps
      • Strategy and Business
      • Design
      • Build
      • Launch & Iterate
      • Freelancers & Agencies
      • All Courses
    • App Development Cost Calculator
    • Hire an Adalo Expert
    • Adalo Forum
  • 📖Glossary
Powered by GitBook
On this page
  • Before You Begin
  • Intro Video
  • Walkthrough
  • Example
  • Learn More
  • Help

Was this helpful?

  1. Integrations

Custom Actions

Build custom actions that let you do things you can't do in Adalo - like use external services (APIs) to send emails, crop photos, generate IDs, or shorten URLs like in this walkthrough.

PreviousAccessing your Record IDNextPower Your App with ChatGPT

Last updated 6 months ago

Was this helpful?

Skill Level: Expert

Before You Begin

  • You will need a to use this feature: Professional Plan or above.

  • Ensure you have an understanding of , , and

  • Ensure you have read about the basics of APIs (see )

Current Limitations:

  • You can't use the return value of a Custom Action if it is used as a whole-screen action.

  • Custom Actions do not work on Form component submit buttons.

Intro Video

Walkthrough

For a detailed beginner's walkthrough with a simple example, click on the In-Depth tab.

1.) Select the component you would like to add the custom action to. Note that custom actions do not work on forms or for using return values on whole-screen actions.

2.) In the Click Actions section of the component's settings, click Add Action, hover over Custom Action, then click New Custom Action.

3.) Give your new Custom Action a name and select the label to be displayed in the Adalo Builder. Choose from Create, Update, or Delete, then click Next

4.) Next you'll want to reference your chosen APIs documentation to find its Base URL, Authorization requirements (if any), and parameters to be sent. Each API is different and has different requirements. For help with this step you can see our primer on APIs or start with a simple example in the In-Depth tab to get your feet wet.

5.) Input the APIs Base URL in the API Base URL field of the custom action. Note that you can use Magic Text here as well to reference the inputs you create (Step 7)

5.) Add any headers or query parameters that are required for your API by clicking +Add Item, then choosing either Header or Query Parameter. Some common headers are the Authorization header and the Content-Type header.

6.) Next, you'll need inputs for your action. You'll want to add an input for each changing piece of data you want to send to the API. In the right side of the popup under the Inputs section, click +Add Item

8.) In the Body input field, build or paste the request JSON body. You can use Magic Text to replace portions of the request with the inputs you just made. This makes these portions of the request variable (dynamic) so you can send different data to the API with each request.

9.) Click Run Test Request. If all goes well, you will receive a Test Successful message along with an output from the API called shortURL. These outputs are automatically created Magic Text outputs for the returned data. You can customize these outputs by clicking on them to change their name or type, or you can delete an output if you don't need it. Once done, click Save Custom Action.

If you receive an error or the test is not successful, check your Custom Action setup and try again. You can always click Show Full Response to see the full response from the API as well as any error codes. If you don't have any returned information, you can also click on +Add Item to find and add the result manually if it is available.

11.) Now that your custom action is setup, you can use it in any app in your team and on any component!

3.) In the button's Click Actions area, click Add Action, then hover over Custom Action and choose New Custom Action. If you have created Custom Actions previously, you will see those here as well.

4.) Give the new custom action a Name such as "Shorten URL" and choose what type of action to display it as in Adalo. You can choose from either Create, Update, or Delete. For this walkthrough, let's choose Create and click Next.

7.) Click Create and you will see your new key in a black text box. Make sure you click Copy and save this to a safe, but memorable location. If you lose your key, you will need to create another one. Click Close once you're done.

8.) With the popup now closed, find the code snippet in the API Usage section, then copy the portion that says https://api.m3o.com/v1/{service}/{endpoint} . This is our Base URL. Paste this into your Custom Action's API Base URL field.

11.) This API requires authentication using our API key. Back in the API Keys portion of your Micro account, you will find in the API Usage section that it requires a Header (-H) named Authorization with your key as the value. For our Custom Action, click +Add Item under the Headers and Queries section, then choose Header

12.) For the name of the header, type in Authorization. For the value, type in Bearer, then paste in your API Key that you saved from Micro. Don't forget to add a space (not Enter) between Bearer and your Key.

13.) Next, we need to add an input field for our Action so that we can send any URL we want using Magic Text. Click +Add Input under the right-hand Inputs section of the Custom Action. Since a URL is a combination of letters, numbers and symbols, choose Text as the input type.

14.) Give the new input a label/name such as "URL to be Shortened", paste in a URL as the Example Value to test with, then click Done. You can find a complete list of the data types and descriptions in the Learn More section of this help guide.

{ "days": 3, "location": "St. Louis" }

17.) Click Run Test Request. If all goes well, you will receive a Test Successful message along with an output from the API called shortURL. These outputs are automatically created Magic Text outputs for the returned data. You can customize these outputs by clicking on them to change their name or type, or you can delete an output if you don't need it. Once done, click Save Custom Action.

If you receive an error or the test is not successful, check your Custom Action setup and try again. You can always click Show Full Response to see the full response from the API as well as any error codes. If you don't have any returned information, you can also click on +Add Item to find and add the result manually if it is available.

18.) Now we need use Magic Text to set the input we created called URL to be Shortened to be whatever the user types into the input field.

19.) You can use the outputs of a Custom Action in subsequent actions. For our example, let's add an Update action to our button underneath our Shorten URL action we just made. Let's have it update the Logged in User.

Custom Action Example - Shorten a Link with the Micro API

Custom Action Example - Send an Email with SendGrid

Custom Action Example - Send Information to a Zapier Webhook

Using the Results or Outputs of a Custom Action

Example

Now when a user puts a link into the input field and taps the button, it will send the link to the Micro API, return the shortened link, and save it to the User's record.

Learn More

  • Custom Actions work best with REST APIs and can only recognize JSON responses. APIs utilizing XML, SOAP, or GraphQL are not supported unless they can return JSON responses.

  • Custom Actions do not work on form actions.

  • Custom Actions can't send multiple records in their API request.

  • Custom Actions are different from External Collections in that they are used to perform a single function instead of displaying a list of items like an external collection.

  • Custom Actions cannot be copied from team to team

Help

The video above is Version 1 of Custom Actions. If you want to see Version 2 where you can now bring data back into your app from other external apps,

7.) Give the input a label/name and select what type of data it is. More information on data types can be found in the section of this help guide.

10.) Now that your action is setup you can place Create, Update or Delete actions below it and reference the custom action outputs through Magic Text. If you need to edit the custom action, you can click on the Pencil icon in the lower left of the action.

1.) For this walkthrough, add an Input field and a Button to a blank screen as well as a Text property to the User's Collection called "Personal Link". If you need help with this step, please see our guide first. You should have something like this:

2.) Select the component you want to add a custom action to. In this walkthrough, we'll be adding it to a button that will shorten a link for us using a powerful external service called .

5.) Open the browser tab containing your account, click on your email in the top right corner, then click on API Keys. API Keys are like a password for your API usage. For this particular API, we can create multiple API Keys if we need to for different apps, but not all APIs are this way.

6.) Click on Create. A popup will appear where you should enter a key Description and select the Scopes, or permissions, this key will use. The scopes directly relate to the services you would like to use with this API Key. In our case, we're going to use the URL service to shorten a URL so just check URL for now. (You can see a full list and descriptions of Micro's services .)

9.) Next we'll replace the {service} and {endpoint} portions of the link with the service and endpoint we want to use. The for the url service tells us that the endpoint for shortening URLs is called shorten. So our Base URL now looks like this: https://api.m3o.com/v1/url/shorten.

10.) Most APIs will specify which Method should be used for an endpoint depending on it's function, but for Micro we should select POST from the dropdown. For more information on request methods, see our primer.

15.) We need to send any related parameters to our endpoint. In this case, we need to send the URL to be shortened. The for our "Shorten" endpoint tells us that we only have to send one parameter called destinationURL . In the JSON Body field of the Custom Action, paste in the Request code snippet from Micro documentation: { "destinationURL": "https://mysite.com/this-is-a-rather-long-web-address" }

If the endpoint you're using requires multiple parameters, format them the same way, but add a comma after each line except the last one. Take Micro's endpoint for example:

For more information on using and creating JSON like this, see our

16.) Use the Magic Text button to replace the https://mysite.com/this... in quotes with the "URL to be Shortened" Input we created.

20.) Use Magic Text in the "Personal Link" property to place info from our previous custom action Shorten URL > shortURL. If you ever need to edit the Custom Action, click on the action and select the Pencil icon in the lower left of the action.

Since Custom Actions cannot be copied with apps, we can't provide a cloneable template, but if you would like to try out the app used in this walkthrough, .

The Micro API has lots of wonderful endpoints that work the exact same way as this walkthrough. Just be sure to branch out and explore other APIs now that you have some experience with a simple one. You can use a site like to find free and paid APIs to help you do all sorts of cool things in Adalo.

For a complete list of use cases for Custom Actions, .

If you would like to take a further look at the capabilities of Custom Actions, we will highly recommend you to take the from .

If you need additional help with this article, you can always ask in our ! Be sure to paste the link to this article in your post as well!

🧩
watch the video here!
Learn More
Getting Started
Micro
Micro
here
Micro documentation
Methods
Micro documentation
Weather Forecast
primer on JSON
click here
Public APIs
click here
Custom Actions Course
The Adalo App Academy
community forum
paid Adalo plan
Actions
Databases
Magic Text
our primer on them here