When a dApp asks MetaMask to interact with a smart contract, two things can happen: a read-only call (no state change) or a state-changing transaction that costs gas. Read-only calls fetch data and do not create on-chain transactions. Write calls modify state and require you to confirm a transaction in MetaMask (gas fees included). Short sentence. Read-only calls cost no gas.
I believe understanding that distinction prevents a lot of mistakes. For example, pressing a "swap" button on a DEX typically triggers a write transaction to a router contract and often a prior token approval; both appear in MetaMask for confirmation. (That's why you sometimes see two or three popups.)
Want to add a token by contract address? The steps are the same across EVM-compatible chains, but the network must be correct.
Step-by-step (desktop):
If you need mobile steps, follow Add tokens on mobile. And remember: a BEP20 contract address is only valid on BSC; adding it while on Ethereum mainnet will be wrong.
If you want to move a token between MetaMask and Trust Wallet, use the same contract address but be sure both wallets are set to the same chain (the query "metamask contract address on trust wallet" often appears because people paste the address into the other app).
A contract call is read-only and usually handled by the dApp's provider without MetaMask prompting you. A write transaction will open MetaMask to confirm gas, data, and the recipient (the contract address). You can also interact manually via a block explorer's Write Contract tab (connect your MetaMask account and sign the transaction).
Common pitfalls:
metamask contract interaction failed
metamask contract interaction pending
metamask contract call / metamask contract only works with zero value
If you're stuck, follow a checklist: network → address → allowance → gas → explorer logs. That ordered approach saved me time more than once.

Token allowance means a contract can move your tokens up to the approved amount. Unlimited approvals are convenient but risky. I once approved an unfamiliar contract and had to revoke. Don't repeat my mistake.
How to check/revoke: use the allowance page on a block explorer or a third-party revoke tool (linked guides exist). For step-by-step revoke actions see Token approvals and revoke.
Tip: use small allowances or single-use approvals when possible. Transaction simulation before approval helps (see Transaction simulation and safety).
Short answer: do high-sensitivity operations with hardware-connected desktop when possible; day-to-day swaps are fine on mobile.
| Feature | MetaMask extension (desktop) | MetaMask mobile | Hardware integration (Ledger/Trezor) |
|---|---|---|---|
| dApp injection (browser) | Yes | Limited (in-app browser) | No (requires host) |
| WalletConnect support | No | Yes | Yes |
| Speed up / Cancel | Yes | Yes | Yes (via host) |
| Add custom token | Yes | Yes | Yes |
| View NFTs | Limited | Better (mobile) | No |
See Which form factor: mobile vs extension and Integrate hardware Ledger/Trezor.
Who MetaMask is for:
Who might look elsewhere:
What I did: added custom ERC-20 and BEP20 tokens on desktop and mobile, executed read and write calls against verified test contracts, intentionally submitted a non-payable call with value > 0 to reproduce the zero-value error, and created delayed/pending transactions to test speed-up/cancel. I used testnets and small token amounts for safety.
How you can repeat it:
Q: Is it safe to keep crypto in a hot wallet? A: Hot wallets are convenient. They are less secure than cold storage. Use small balances for daily activity and a hardware wallet for larger holdings. See Security best practices and Backup and recovery seed phrase.
Q: How do I revoke token approvals? A: Check allowances via a block explorer or a revoke tool and set the allowance to 0 (or use the revoke tool UI). Follow the step-by-step in Token approvals and revoke.
Q: What happens if I lose my phone? A: Restore with your seed phrase on a new device. If you lose the seed phrase, funds are unrecoverable. Read Lost phone & recovery and Recover lost wallets.
MetaMask makes contract interactions accessible but that convenience carries risk. Test on testnets, verify contract addresses, and keep allowances tight. But most mistakes are recoverable when you take small, repeatable steps first.
If you want a guided walkthrough, start with Create MetaMask wallet or follow the setup guide at Setup MetaMask step-by-step. Try the steps above on a testnet before using mainnet funds. Safe experimenting.