
This comprehensive tutorial walks you through creating a functional messaging application using Adalo's no-code platform. While Telegram handles messaging at massive scale, you'll learn to build a production-ready clone with group chats, media sharing, user profiles, and real-time communication—all without writing code.
Why Build a Telegram Clone Without Code
Building a messaging app with traditional development can range from $17,500 to over $200,000 depending on complexity and the development team. With Adalo's no-code app builder, you can launch an MVP while learning essential app development concepts.
The Power of No-Code for Messaging Apps
No-code platforms eliminate technical barriers:
- Speed: Build functional chat features in days, not months
- Cost: Start with unlimited test apps on Adalo's free tier
- Learning: Understand database relationships and user flows visually
- Iteration: Make changes instantly without recompiling code
Adalo empowers makers to bring messaging app ideas to life through its drag-and-drop builder and built-in relational database. Over 1 million apps have been created on the platform, processing 20 million requests daily.
Understanding the Trade-offs
Before starting, know the key limitation: Adalo doesn't support native real-time messaging. You'll need to implement workarounds using manual refresh, push notifications, or third-party WebSocket components like PragmaFlow. For true real-time experiences like Telegram's instant delivery, traditional development or platforms like FlutterFlow may be better suited.
Getting Started: Setting Up Your Adalo Project
Step 1: Create Your Adalo Account
- Navigate to Adalo.com and click "Sign Up"
- Choose "Mobile App" (recommended for messaging apps)
- Name your app (e.g., "Telegram Clone")
- Select "Start from Scratch" to build from the ground up
Time Required: 5 minutes
Step 2: Install the User Chat Feature Template
Rather than building from scratch, save 20+ hours by starting with Adalo's pre-built template:
- Click "+" icon in the screens panel
- Select "Feature Templates"
- Choose "User Chat template"
- Click "Install"
This provides:
- Pre-configured chat list screen
- Conversation thread screen
- New message screen
- Basic database schema with Users, Messages, and Conversations collections
Time Required: 10 minutes
Step 3: Configure Your App Theme
- Click the Settings icon in the left sidebar
- Select "Branding"
- Choose your primary color (Telegram uses #3390EC)
- Select secondary color for accents
- Pick a clean, modern font
- Upload your app logo and icon
Building Core Functionality: Users and Chat Features
Step 4: Enhance the Users Collection
The template includes a basic Users collection. Expand it for Telegram-like features:
- Click Database icon in left sidebar
- Select "Users" collection
- Add these properties (click "+ Add Property" for each):
- Username (Text) - Unique identifier like @username
- Phone Number (Text) - For authentication
- Bio (Text, Multiline) - User description
- Profile Picture (Image)
- Last Seen (Date & Time)
- Online Status (True/False)
- Push Token (Text) - For notifications
- Blocked Users (Relationship: Many-to-Many with Users)
Critical Detail: Following the documented WhatsApp schema ensures your relationships work correctly from the start.
Step 5: Build the Messages Collection
The template provides a basic Messages collection. Enhance it:
- In Database, click "Messages"
- Add/verify these properties:
- Message Type (Text) - Values: "Text", "Image", "Video", "Audio", "File"
- Text Content (Text, Multiline)
- Media File (File or Image)
- Read Status (True/False)
- Delivered (True/False)
- Deleted (True/False)
- Sent At (Date & Time - Automatic)
- Edited At (Date & Time)
- Reply To (Relationship: Many-to-One with Messages) - For message replies
- Sender (Relationship: Many-to-One with Users)
- Conversation (Relationship: Many-to-One with Conversations)
Step 6: Create the Conversations Collection
This is the core of your messaging structure:
- Click "+ Add Collection"
- Name it "Conversations"
- Add these properties:
- Type (Text) - Values: "Individual", "Group", "Channel"
- Name (Text) - For group chats
- Group Photo (Image)
- Last Message (Relationship: One-to-One with Messages)
- Last Message Time (Date & Time)
- Unread Count (Number)
- Created By (Relationship: Many-to-One with Users)
- Created At (Date & Time - Automatic)
Step 7: Create the Participants Collection
This bridges Users and Conversations for group functionality:
- Click "+ Add Collection"
- Name it "Participants"
- Add properties:
- User (Relationship: Many-to-One with Users)
- Conversation (Relationship: Many-to-One with Conversations)
- Role (Text) - Values: "Member", "Admin", "Owner"
- Joined At (Date & Time - Automatic)
- Muted Until (Date & Time)
- Archived (True/False)
- Pinned (True/False)
- Last Read Message (Relationship: Many-to-One with Messages)
This structure allows many-to-many relationships between users and conversations—essential for group chats.
Step 8: Set Up Database Relationships
- In Conversations collection:
- Add relationship to Users: "Participants" (through Participants collection)
- This creates: A Conversation can have many Participants; A User can be in many Conversations
- In Messages collection:
- Verify relationship to Conversations: Many-to-One
- Verify relationship to Users (Sender): Many-to-One
- In Participants collection:
- Verify relationships are bidirectional
- Each Participant links one User to one Conversation
Pro Tip: The relational database visual mapper shows color-coded lines connecting collections. Verify all lines appear correctly.
Implementing Message Sending and Display
Step 9: Customize the Chat List Screen
The template provides a "Chats List" screen. Enhance it:
- Select the List component showing conversations
- Configure the filter:
- Participants > User > Contains > Logged In User
- Set sort order:
- Last Message Time > Descending
- Customize what displays for each conversation:
- Image: Conversation > Group Photo (or other user's profile picture for 1:1)
- Name: Conversation > Name (or other user's name)
- Last Message: Conversation > Last Message > Text Content (first 50 characters)
- Time: Conversation > Last Message Time (formatted)
- Unread Badge: Conversation > Unread Count (visible only if > 0)
Step 10: Build the Message Input Element
In the conversation thread screen:
- At bottom, add Form component
- Connect to Messages collection
- Add Text Input field:
- Placeholder: "Type a message..."
- Property: Text Content
- Add Image Picker button for media:
- Property: Media File
- Icon: Camera or paperclip
- Add Send Button:
- Icon: Paper plane
- Style: Circle, positioned right
Step 11: Configure Message Sending Actions
When the Send button is clicked:
- Create a new Message:
- Text Content = Form input
- Sender = Logged In User
- Conversation = Current Conversation
- Sent At = Current Time
- Delivered = True
- Read Status = False
- Update the current Conversation:
- Last Message = Created Message
- Last Message Time = Current Time
- Clear the form input
- Refresh the messages list (workaround for real-time)
Step 12: Display Conversation Threads
In the conversation screen's messages list:
- Add Custom List component
- Filter:
- Conversation = Current Conversation
- Sort by:
- Sent At > Ascending (oldest first)
- For each message, display:
- Text: Message > Text Content
- Image: Message > Media File (if exists)
- Time: Message > Sent At (formatted as "HH:MM")
- Read Receipt: Double checkmark if Read Status = True
- Sender Name: Message > Sender > Username (for group chats)
- Add conditional visibility:
- Align left if Sender ≠Logged In User
- Align right if Sender = Logged In User
- Different background colors for sent vs received
Step 13: Implement Manual Refresh
Since Adalo lacks native real-time:
- Add Button at top of messages list:
- Icon: Refresh circular arrow
- Label: "Pull to refresh"
- Button action: Refresh List (reloads messages)
- Enable "Load Items as User Scrolls" in list settings
- Set refresh interval using Countdown Timer (5-10 seconds)
Alternative: Install PragmaFlow WebSocket component for true real-time messaging without manual refresh.
Advanced Clone Features: Groups, Avatars, and More
Step 14: Add Group Chat Creation
- Create new screen "New Group"
- Add Form connected to Conversations:
- Group Name (Text Input)
- Group Photo (Image Picker)
- Type = "Group" (hidden field, auto-set)
- Add Multi-Select List of Users:
- Filter: All Users except Logged In User
- Checkbox for each user
- Submit button action:
- Create Conversation
- For each selected user: Create Participant (User = selected, Conversation = created conversation)
- Create Participant for Logged In User with Role = "Owner"
- Navigate to new conversation
Step 15: Implement Group Management
Create "Group Settings" screen:
- Show group details:
- Group Photo (editable)
- Group Name (editable by admins)
- Created By and Created At
- Add List of Participants:
- Show User > Profile Picture
- Show User > Username
- Show Role (Admin/Member)
- For group owners/admins:
- Button: "Add Participants" → Multi-select users screen
- Button: "Remove" next to each member (admins only)
- Button: "Make Admin" (owners only)
- For all members:
- Toggle: "Mute Notifications"
- Button: "Leave Group" → Delete own Participant record
Step 16: Add User Profiles and Avatars
Create "User Profile" screen:
- For own profile:
- Form to update Logged In User:
- Profile Picture (Image Picker)
- Username (Text Input)
- Bio (Multiline Text Input)
- Phone Number (display only)
- Form to update Logged In User:
- For other users' profiles:
- Display only (no edit):
- Profile Picture
- Username
- Bio
- Last Seen (if not blocked)
- Button: "Start Conversation" → Create or navigate to 1:1 conversation
- Button: "Block User" → Add to Blocked Users relationship
- Display only (no edit):
Step 17: Enable Media Attachments
Enhance the message input:
- Add File Picker button next to text input
- On file selected:
- Set Message Type based on file extension (image/video/audio)
- Upload to Media File property
- Display preview before sending
- In message display:
- For images: Show inline with click to fullscreen
- For videos: Show play button overlay
- For audio: Show audio player controls
- For files: Show filename and download button
Consider installing marketplace components for enhanced media handling:
- Audio Player component
- Video Player component
- File Preview component
Step 18: Implement Push Notifications
Enable notifications on Professional plan or higher:
- In app settings, enable Push Notifications
- Request permission on signup:
- Action: "Request Notification Permission"
- Save Push Token to user record
- Configure notification triggers:
- When message created AND Conversation > Participants contains Recipient:
- Send notification to Recipient > Push Token
- Title: Sender > Username
- Body: Text Content (first 100 characters)
- Sound: Enabled
- When message created AND Conversation > Participants contains Recipient:
- Set up notification actions:
- Tap notification → Navigate to conversation
Testing and Iteration
Step 19: Add Test Data
Create realistic test scenarios:
- Add 5-10 test users with varied usernames and profile pictures
- Create 3-4 individual conversations
- Create 2-3 group conversations with different member counts
- Populate conversations with 20-50 messages each
- Test with various message types (text, images, files)
Step 20: Test Core Functionality
Systematically verify:
- User authentication: Signup, login, logout
- 1:1 messaging: Send, receive, media attachments
- Group chats: Create, add members, remove members, leave group
- Notifications: Receive when app backgrounded
- Read receipts: Mark messages as read when viewed
- Filtering: Blocked users don't appear in chats
- Performance: Load times with 50+ messages
Step 21: Optimize Performance
Prevent the 2,000-record wall:
- Enable pagination on message lists:
- Load 50 messages initially
- "Load Items as User Scrolls" for older messages
- Compress images before upload:
- Use TinyPNG or similar
- Target <1MB file size
- Archive old conversations:
- Add "Archive" action that sets Archived = True
- Filter chat list to hide archived
- Implement message deletion:
- Set Deleted = True rather than deleting record
- Filter to hide deleted messages
For apps expecting 10,000+ users, plan to integrate Xano external database from the start.
Step 22: Gather Feedback from Beta Users
Before public launch:
- Share test app link (Adalo preview) with 10-20 users
- Create feedback form:
- Rate overall experience (1-5 stars)
- What features are missing?
- What's confusing?
- What works well?
- Monitor app analytics:
- Which screens have highest drop-off?
- Average session duration
- Most-used features
- Iterate based on insights
Publishing Your Messaging App
Step 23: Prepare for App Store Submission
Required accounts:
- Apple Developer Program: $99/year
- Google Play Developer: $25 one-time
- Adalo plan: Minimum Starter plan ($45/month, or $36/month billed annually) for publishing
Prepare assets:
- App icon (1024x1024px)
- Screenshots for App Store (5-8 images)
- Privacy policy URL (required)
- App description (4,000 characters max)
- Keywords for App Store Optimization
Step 24: Configure Publishing Settings
In Adalo's publishing section:
- Navigate to Publish → iOS
- Enter Apple Developer credentials
- Upload app icon and launch screen
- Configure app settings:
- Display name
- Bundle ID (reverse domain: com.yourcompany.appname)
- Version number (1.0.0)
- Privacy policy link
- Repeat for Android:
- Package name
- Signing key generation
- For Web App:
- Choose custom domain or Adalo subdomain
- Enable responsive design
Step 25: Submit to App Stores
iOS submission:
- Click "Publish to App Store"
- Adalo builds your app (15-30 minutes)
- Review in TestFlight first
- Submit for App Store review (typically 24-48 hours)
- Monitor status in App Store Connect
Android submission:
- Click "Publish to Google Play"
- Adalo generates APK/AAB
- Upload to Google Play Console
- Complete content rating questionnaire
- Submit for review (typically 1-3 days)
Common rejection reasons: Review app store guidelines to avoid issues with content policies, privacy requirements, or functionality.
Step 26: Launch Your Web Version
Fastest path to users:
- Navigate to Publish → Web
- Choose publishing method:
- Adalo subdomain (yourapp.adalo.com) - Free
- Custom domain ($10-45/year) - Starter plan required
- Click "Publish Web App"
- Live in 2-3 minutes
Benefits: No app store approval wait, instant updates, works on all devices with responsive design.
Scaling and Maintaining Your Adalo Chat App
Step 27: Monitor App Performance
Track key metrics:
- User growth: Active users per day/week/month
- Message volume: Total messages sent daily
- Database size: Current records vs plan limits
- App uptime: Adalo reports 99%+ availability
- Crash reports: iOS/Android native crash analytics
Use external tools:
- Google Analytics (via custom code)
- Mixpanel for user behavior
- Sentry for error tracking
Step 28: Plan for Database Scaling
Adalo's internal database limits:
- Free: 200 records
- Starter: 5GB
- Professional: 25GB
- Team: 125GB
When approaching limits:
- Archive old data: Move messages older than 90 days to external storage
- Integrate Xano: Team plan includes free Xano Starter plan (a $29/month value)
- Implement data retention: Auto-delete messages after 1 year (optional)
- Optimize media storage: Store images/videos on AWS S3, save URLs only
Step 29: Leverage Integrations for Features
Extend functionality without code:
- Zapier: Automate workflows
- New user signup → Send welcome email via Gmail
- Inappropriate message flagged → Create ticket in Zendesk
- Daily summary → Post stats to Slack
- Stripe: Monetize with premium features
- Subscription for unlimited groups
- Pay to remove ads
- Premium sticker packs
- Airtable: Sync user data for analysis
- Firebase: Advanced push notifications
Step 30: Update Without Disrupting Users
Adalo's publishing model:
- Make changes in editor
- Test in preview environment
- Click "Publish" when ready
- Updates deploy in 2-5 minutes
- Users get updates on next app open (no App Store review needed for most changes)
Exception: Major functionality changes or new permissions may require App Store re-review. Plan accordingly.
Why Adalo for Building Your Messaging App
Choosing the right platform determines your app's success. Adalo stands out for messaging applications for several reasons.
Speed to Market
With Adalo's feature templates, you start with working chat functionality instead of a blank canvas. The User Chat and Group Messaging templates include production-ready database schemas, saving 60-80% of initial development time. What would take 4-6 months with traditional development becomes a 2-4 week sprint.
True Cross-Platform Publishing
Build once, publish everywhere. Your Telegram clone deploys to iOS, Android, and web from a single codebase. Unlike Bubble (web-only) or Glide (PWA-only), Adalo generates native mobile apps that perform like traditionally coded applications.
Visual Database Builder
Adalo's relational database removes the complexity of SQL. You visually map relationships between Users, Messages, and Conversations with colored lines showing connections. The platform prevents common structural errors that plague coded apps—no syntax bugs, no migration headaches.
Cost-Effective Scaling
Start free with unlimited test apps, then scale affordably. At $624/year (Professional plan), you get published apps, custom domains, and API integrations—a 96-98% reduction versus traditional development costs.
When your user base grows beyond 10,000, the Team plan includes Xano integration for external database scaling, keeping your app performant without rebuilding.
Community and Support
Access Adalo's community for peer assistance, browse showcase apps built by other makers, and hire verified Adalo Experts when you need professional help. The App Academy offers free courses on advanced topics like database design and performance optimization.
Known Limitations to Consider
Transparency matters. Adalo doesn't support:
- Native real-time messaging (requires PragmaFlow add-on or manual refresh)
- End-to-end encryption (messages accessible on Adalo servers)
- Background location tracking (location updates only when app open)
- Code export (vendor lock-in consideration)
For internal business communication, community apps, or booking platforms with messaging, these trade-offs are acceptable. For consumer chat apps competing with WhatsApp or Signal, consider the real-time limitations carefully.
Frequently Asked Questions
Can I truly build a complex messaging app like Telegram without any coding experience?
Yes, with caveats. Adalo's User Chat template and visual database builder handle the complexity. You can build 1:1 messaging, group chats, media sharing, and user profiles without touching code. However, you'll face limitations in real-time delivery (messages don't appear instantly without manual refresh or third-party components) and advanced features like voice calls or encrypted messaging require external services. For MVPs and community apps, Adalo excels. For consumer-grade apps competing with established messaging platforms, expect to hire Adalo Experts or eventually migrate to traditional development.
What kind of limitations might I face when building a chat app with Adalo compared to traditional coding?
The primary constraint is real-time communication—Adalo processes 20 million requests daily but doesn't support WebSocket connections natively. Messages require manual refresh, periodic polling, or push notifications when the app is backgrounded. Your app will also hit performance walls at 2,000+ records per list without pagination. Additionally, you can't implement end-to-end encryption (messages are stored in plaintext on Adalo servers), background services (no message sending while app closed), or complex server-side logic. For user bases exceeding 10,000, you'll need Xano integration to offload database operations. Despite these limits, Adalo handles the 37-step WhatsApp clone process documented in official tutorials.
How much does it cost to build and publish a messaging app using Adalo?
Building and publishing a messaging app with Adalo requires several components. The Professional plan at $52/month ($624/year) is the minimum for production apps with push notifications and custom domains. Add $99/year for Apple Developer license and $25 one-time for Google Play. If your user base reaches 10,000+, upgrade to Team plan ($160/month = $1,920/year) which includes Xano integration. This contrasts sharply with traditional development—a 96-98% cost reduction.
Can I integrate third-party services like payment gateways or advanced analytics into my Adalo chat app?
Yes, extensively. Adalo's Professional plan and higher unlock Custom Actions for API integrations. Native integrations include Stripe for payments (subscriptions, premium features), Zapier for 5,000+ app automations, Xano for backend scaling, and Google Maps for location features. For analytics, embed Google Analytics or Mixpanel via custom code blocks. The Component Marketplace offers 50+ premium components including advanced chat features, payment processors, and media players. Third-party services typically connect via webhooks—when a message is sent, trigger a Zapier automation to log data to Airtable or send alerts to Slack. These integrations operate at 99%+ uptime matching Adalo's platform reliability.










