Updated Jul 24, 2025

Step-by-Step Guide: Building a WhatsApp Clone with Adalo

Table of Contents
Text Link

This comprehensive tutorial will guide you through building a WhatsApp-style messaging app using Adalo's no-code platform. While Adalo has limitations for real-time messaging, we'll implement creative solutions to create a functional messaging app with individual chats, groups, media sharing, and more.

Prerequisites and Initial Setup

Step 1: Create Your Adalo Account

  1. Go to Adalo.com and sign up
  2. Click "Create New App"
  3. Choose "Mobile App" (essential for messaging features)
  4. Select "Start from Scratch"
  5. Name your app (e.g., "ChatApp")

Step 2: Configure App Theme

  1. Choose primary color (green for WhatsApp style)
  2. Select white background
  3. Pick a clean, readable font (like Open Sans)
  4. Set up responsive mobile settings
  5. Click "Continue" to enter editor

Building the Database Structure

Step 3: Enhance Users Collection

  1. Click Database icon in left sidebar
  2. Select default "Users" collection
  3. Add these properties (click "+ Add Property"):
    • Phone Number (Text - unique)
    • Display Name (Text)
    • Profile Picture (Image)
    • About/Status (Text)
    • Last Seen (Date & Time)
    • Online Status (True/False)
    • Push Token (Text)
    • Blocked Users (Relationship to Users - Many to Many)

Database documentation

Step 4: Create Conversations Collection

  1. Click "+ Add Collection"
  2. Name it "Conversations"
  3. Add properties:
    • Type (Text) - Values: "individual", "group"
    • Last Message (Text)
    • Last Message Time (Date & Time)
    • Unread Count (Number)
    • Created At (Date & Time - Automatic)
    • Group Name (Text)
    • Group Icon (Image)
    • Group Description (Text)

Step 5: Create Messages Collection

  1. Click "+ Add Collection"
  2. Name it "Messages"
  3. Add properties:
    • Message Type (Text) - Values: "text", "image", "video", "audio", "document"
    • Text Content (Text - Multiline)
    • Media File (File)
    • File Name (Text)
    • File Size (Number)
    • Created At (Date & Time - Automatic)
    • Read (True/False - default: false)
    • Read At (Date & Time)
    • Delivered (True/False)
    • Deleted (True/False)

Step 6: Create Participants Collection

  1. Click "+ Add Collection"
  2. Name it "Participants"
  3. Add properties:
    • Joined At (Date & Time - Automatic)
    • Role (Text) - Values: "member", "admin"
    • Muted Until (Date & Time)
    • Archived (True/False)
    • Pinned (True/False)

Step 7: Create Status/Stories Collection

  1. Click "+ Add Collection"
  2. Name it "Status"
  3. Add properties:
    • Content Type (Text) - Values: "text", "image", "video"
    • Text Content (Text)
    • Background Color (Text)
    • Media File (File)
    • Created At (Date & Time - Automatic)
    • Expires At (Date & Time)
    • Caption (Text)

Step 8: Create Status Views Collection

  1. Click "+ Add Collection"
  2. Name it "Status Views"
  3. Add properties:
    • Viewed At (Date & Time - Automatic)

Step 9: Set Up Relationships

  1. In Messages:


    • Sender → Users (Many to One)
    • Conversation → Conversations (Many to One)
    • Reply To → Messages (Many to One)
  2. In Participants:


    • User → Users (Many to One)
    • Conversation → Conversations (Many to One)
  3. In Conversations:


    • Creator → Users (Many to One)
  4. In Status:


    • Creator → Users (Many to One)
  5. In Status Views:


    • Status → Status (Many to One)
    • Viewer → Users (Many to One)

Installing Required Components

Step 10: Install Essential Components

From Marketplace:

  1. Audio Player - for voice messages
  2. File Picker - for document sharing
  3. Search for real-time chat options:
    • PragmaFlow WebSocket Chat (paid)
    • TalkJS Integration (requires coding)

How to add marketplace components

Step 11: Consider Third-Party Solutions

For better real-time features:

  1. PragmaFlow Components:
    • Real-time chat component
    • Microphone recorder (for voice notes)
    • Timer components
  2. Templar Design Chat Template (most powerful pre-built solution)

Building the Chat List Screen

Step 12: Create Main Chats Screen

  1. Add new screen "Chats"
  2. Add App Bar:
    • Title: "WhatsApp"
    • Search icon (right)
    • Menu icon (right)
  3. Add Tab Bar at top:
    • Camera icon
    • "CHATS" (active)
    • "STATUS"
    • "CALLS"

Step 13: Build Conversation List

  1. Add Custom List:
    • Data: Conversations
    • Filter: Current User is in Participants
    • Sort: Last Message Time (Newest First)
  2. For each list item, display:
    • Profile picture/Group icon (60x60 circle)
    • Conversation name
    • Last message preview
    • Last message time
    • Unread count badge (if > 0)

Step 14: Add Floating Action Button

  1. Add circular button (bottom right)
  2. Icon: Message/Chat bubble
  3. Action: Navigate to "New Chat" screen
  4. Position: Fixed to bottom right

Chat implementation guide

Creating Individual Chat Interface

Step 15: Build Chat Screen

  1. Create new screen "Chat"
  2. Add custom App Bar:
    • Back button
    • User profile picture
    • User name
    • "Last seen" or "Online" status
    • Video call icon
    • Voice call icon
    • Menu icon

Step 16: Design Message List

  1. Add Custom List for messages:
    • Data: Messages
    • Filter: Conversation = Current Conversation
    • Sort: Created At (Oldest First)
  2. Use conditional formatting:
    • Sent messages: Right aligned, green background
    • Received messages: Left aligned, white background
    • Show time below each message

Step 17: Create Message Input Bar

  1. Add horizontal group at bottom:
    • Emoji icon
    • Text Input (expandable)
    • Attachment icon
    • Camera icon
    • Microphone icon (if no text)
    • Send button (if text exists)

Step 18: Implement Send Functionality

  1. On Send button click:
    • Create Message record
    • Update Conversation last message
    • Clear input field
    • Scroll to bottom
  2. Add attachment menu:
    • Document picker
    • Camera
    • Gallery
    • Audio
    • Location
    • Contact

Building Group Chat Features

Step 19: Create New Group Screen

  1. Add screen "New Group"
  2. Add group info section:
    • Image Picker for group icon
    • Text Input for group name
    • Text Input for description
  3. Add participant selection:
    • Search bar
    • Custom List of contacts
    • Checkbox for each contact
    • Selected participants chip list

Group messaging documentation

Step 20: Build Group Info Screen

  1. Create "Group Info" screen
  2. Display:
    • Group icon and name (editable for admins)
    • Description
    • Media/Links/Docs section
    • Participants list with roles
    • Add participants button
    • Exit group button

Step 21: Implement Group Admin Features

  1. Add conditional actions based on role:
    • Edit group info (admin only)
    • Add/remove participants (admin only)
    • Make admin option
    • Remove from group option
  2. Group settings:
    • Mute notifications
    • Custom notifications
    • Media visibility

Implementing Media Sharing

Step 22: Create Image/Video Viewer

  1. Add "Media Viewer" screen
  2. Add Image component (full screen)
  3. Add overlay with:
    • Sender name and time
    • Caption (if exists)
    • Download button
    • Forward button
    • Back button

Step 23: Build Voice Message Feature

Note: Limited in Adalo, requires workarounds

  1. Option 1: Link to device recorder
  2. Option 2: Use PragmaFlow Microphone component
  3. Display using Audio Player:
    • Show waveform visualization
    • Duration display
    • Play/pause controls

Audio Player setup

Step 24: Implement Document Sharing

  1. Use File Picker component
  2. Support file types:
    • PDF, DOC, XLS
    • Size limit: 50MB
  3. Display with:
    • File icon
    • File name
    • File size
    • Download action

Building Status/Stories Feature

Step 25: Create Status Tab

  1. On main screen, add Status section
  2. Add "My Status" row:
    • User profile picture
    • "Add status update" text
    • Plus icon
  3. Add Custom List for contacts' statuses:
    • Filter: Created > 24 hours ago
    • Group by creator
    • Show viewed/unviewed differently

Step 26: Build Status Creation

  1. Create "Add Status" screen
  2. Options:
    • Text status with backgrounds
    • Photo status with caption
    • Video status (30 seconds max)
  3. Add privacy settings:
    • My contacts
    • My contacts except...
    • Only share with...

Step 27: Create Status Viewer

  1. Add "View Status" screen
  2. Full-screen display
  3. Progress bar at top
  4. Auto-advance after 5 seconds
  5. Reply option at bottom
  6. Track views

Adding Communication Features

Step 28: Implement Voice/Video Calls

Limitation: No native support

  1. Options:
    • Link to phone dialer
    • Integrate third-party service
    • Use marketplace video call component
  2. Create call logs in database
  3. Show in Calls tab

Video calling options

Step 29: Create Contact Integration

  1. Add "Contacts" screen
  2. Show app users from contacts
  3. Invite non-users option
  4. Sync with phone contacts (limited)

Step 30: Build Search Functionality

  1. Add "Search" screen
  2. Search through:
    • Conversations
    • Messages
    • Contacts
  3. Display results by category
  4. Highlight search terms

Implementing Settings and Privacy

Step 31: Create Settings Screen

  1. Add profile section:
    • Profile picture (editable)
    • Name (editable)
    • About (editable)
  2. Add settings options:
    • Account
    • Chats
    • Notifications
    • Storage and data
    • Help

Step 32: Build Privacy Controls

  1. Last seen options:
    • Everyone
    • My contacts
    • Nobody
  2. Profile photo visibility
  3. About visibility
  4. Read receipts toggle
  5. Blocked contacts management

Step 33: Configure Notifications

  1. Set up push notifications:
    • New message alerts
    • Group mentions
    • Status updates
  2. In-app notification settings:
    • Message preview
    • Sound selection
    • Vibration patterns

Push notifications setup

Optimizing Performance

Step 34: Handle Real-Time Limitations

Critical: Adalo doesn't support true real-time

  1. Workarounds:
    • Add refresh button
    • Pull-to-refresh action
    • Auto-refresh timer (every 5-10 seconds)
    • Use PragmaFlow WebSocket component
  2. Show "Connecting..." status
  3. Implement offline message queue

Step 35: Optimize Message Loading

  1. Limit initial load to 50 messages
  2. Add "Load earlier messages" button
  3. Implement pagination
  4. Cache recent conversations
  5. Compress media before upload

Testing and Deployment

Step 36: Test Core Features

  1. Message sending/receiving
  2. Group creation and management
  3. Media sharing
  4. Status updates
  5. Notification delivery
  6. Search functionality
  7. Performance with multiple chats

Step 37: Prepare for Launch

  1. Upgrade to Professional plan ($65/month minimum)
  2. Set up encryption notice (not E2E)
  3. Create privacy policy
  4. Add terms of service
  5. Implement reporting system
  6. Set up user support

Working with Platform Limitations

What's Not Possible:

  • True real-time messaging (requires refresh)
  • End-to-end encryption
  • Native voice recording
  • Video/voice calls (without third-party)
  • Large file transfers (>50MB)
  • Typing indicators
  • Online/offline real-time status

Recommended Solutions:

  1. Use third-party components for real-time
  2. Implement manual refresh options
  3. External services for calls
  4. Compress media before upload
  5. Use webhooks for better notifications

Cost Breakdown

Monthly Costs:

  • Starter ($45): Very limited
  • Professional ($65): Minimum recommended
  • Team ($200): For collaborative development
  • Business ($250): Best performance

Additional Costs:

  • PragmaFlow components: $20-50/month
  • Real-time chat solutions: $50-200/month
  • Storage for media files
  • Third-party integrations

Additional Resources

Final Recommendations

This WhatsApp clone will provide core messaging functionality but with limitations:

  • Focus on asynchronous messaging
  • Implement manual refresh mechanisms
  • Use third-party components for advanced features
  • Consider hybrid approach for real-time needs
  • Set user expectations about refresh requirements

For production use, consider:

  • Investing in real-time components
  • External API integration
  • Custom component development
  • Progressive web app approach for better performance

‍

Start Building With An App Template
Build your app fast with one of our pre-made app templates
Try it now
Read This Next

Looking For More?

Ready to Get Started on Adalo?