Are you saying that it's not working for things that have static leases, but are for dynamic? How are they being assigned? Do you have them set statically from the dhcp server, or from the end device? If it's assigned on the end device, then I don't think pihole ever picks up the hostname since that would have been sent in the dhcp discovery, and if it's static on the end device, it won't ever issue a dhcp discovery message. So it would need to be manually added to your local DNS if it's assigned static on the device
If your pihole is acting as the dhcp server, you should only need the domain set up under the advanced dhcp settings, and it appends the domain to the hostname whenever a dhcp lease is assigned.
You may have some responses from .local addresses that are not registered in dhcp since .local is used with mDNS
Alternatively, if you still have the dchp server running on one of your other boxes and you have two dhcp servers, you may be getting clients leasing from the wrong server, and in that case pihole would not know about it. If you have a different domain name set up in another dhcp server you want pihole to resolve, you can set up conditional forwarding (on the DNS settings tab) in order for pihole to know where to ask about that domain
You could also add clients manually under 'DNS Records', and you can assign whatever domain, but that's also very manual and shouldn't be needed if pihole is assigning leases and you have the domain set up properly