[SOLVED] Moralis doesn't sync events emitted inside internal transactions

I have an issue where Moralis is not syncing Transfer events. The contract in question is an ERC-721 token. Tokens are minted by another (minter) contract.

This means that Transfer events are emitted in the token contract, but the function that initiates the minting process is called in the minter contract.

My problem is that Moralis doesn’t seem to catch a Transfer event unless I call mint directly on the token contract. If the minting function is called by another contract (in this case the minter contract), the Transfer event gets emitted, but Moralis doesn’t register it. I have to manually re-sync historical events in order for Moralis to catch Transfer events.

Is this a known problem in Moralis?

this isn’t a known problem from what I know, it should sync any event specific to the address that you specify it to sync, it will sync based on what address emits the event, not based on the contract function that is called

Makes sense. It looks like Moralis successfully synced the event and sent out a webhook, but for some reason the event doesn’t display in the interface (the table is empty).

what is the server url and table?
it could be various reasons to not save it in the database like column names that start with _, or an error in a beforeSave hook

Server url:
https://avfnq521juiy.usemoralis.com:2083/

Table:
LandTransferNew

I think none of the arguments inside the event start with _ (it’s just a regular Transfer event). The name of the table also doesn’t contain any special characters. Not sure what could be the issue here. The strange thing is that the webhook is firing just fine.

I used the standard way to create a webhook (I just clicked the “+” button next to “Webhooks” and entered all inputs).

I restarted the server, restarted coreservices, forced a resync for that event, it looks like it works now

1 Like

That’s great, thank you for helping.

1 Like