Determining the relative roles of vicariance and selection in restricting gene flow between populations is of central importance to the evolutionary process of population divergence and speciation. Here we use molecular and morphological data to contrast the effect of isolation (by mountains and geographical distance) with that of ecological factors (altitudinal gradients) in promoting differentiation in the wedge-billed woodcreeper, Glyphorynchus spirurus, a tropical forest bird, in Ecuador. Tarsus length and beak size increased relative to body size with altitude on both sides of the Andes, and were correlated with the amount of moss on tree trunks, suggesting the role of selection in driving adaptive divergence. In contrast, molecular data revealed a considerable degree of admixture along these altitudinal gradients, suggesting that adaptive divergence in morphological traits has occurred in the presence of gene flow. As suggested by mitochondrial DNA sequence data, the Andes act as a barrier to gene flow between ancient subspecific lineages. Genome-wide amplified fragment length polymorphism markers reflected more recent patterns of gene flow and revealed fine-scale patterns of population differentiation that were not detectable with mitochondrial DNA, including the differentiation of isolated coastal populations west of the Andes. Our results support the predominant role of geographical isolation in driving genetic differentiation in G. spirurus, yet suggest the role of selection in driving parallel morphological divergence along ecological gradients.